2017-09-15 12 views
0

줄리아는 구체적으로 함수 정의를 가지고 있습니까? 그렇다면 BNF는 무엇입니까? 그와 함수 선언 및 함수 호출을 갖는 예를 들어줄리아의 함수 정의

BNF

•Function Declaration 
function name (arguments :: type) 
     #expressions 
End 

<function> → (function <identifier> (<arguments>) <expressionList> end) | 
<identifier>(<arguments>) <expressionList> end 
<arguments> → <identifier> :: <type> | (<identifier> :: <type>),arguments>|e 

•Function Call 
     x = sum (12 , y :: Int32) 

<funcall> → <identifier> = <identifier> (<parameterList>) 
<parameterList> → <parameter> :: <type>, < parameterList> | <parameter> ::<type> | <parameter>, <parameterList> 
<parameter> → <identifier> | <element> | e 
+0

줄리아 구문은 컨텍스트가 없습니다. 참조 : https://groups.google.com/d/msg/julia-users/LwewtNffleo/f-AqxMulbFwJ –

답변

0

매트는 B. 주석에서 설명한 바와 같이, 줄리아 구문 문맥 자유 아니다.

<...> 유효한 함수 호출 인 경우, 일반적으로 다음 유효 메소드 정의 :

function <...>::ReturnType; (body); end 
<...>::ReturnType = (body) 
: 또한

function <...>; (body); end 
<...> = (body) 

, 함수 호출에 대한 리턴 타입 주석을 추가 할 수있다

리턴 형식 대신 또는 그 외에도 짧은 형식과 긴 형식 모두에 대해 where 절의 임의의 수를 사용할 수 있습니다.

function <...>::ReturnType where T; (body); end 
(<...>::ReturnType) where S = (body) 
function <...> where T where S; (body); end 
<...> where {S, T} = (body) 

짧고 긴 두 형태는 특정 예선 지원 : 함수가 여러 형태로 올 수있는 자신을 부르는

global function <...>; (body); end 
local <...> = (body) 

참고; 예를 들면 다음과 같습니다.

x ← y = x + y 
function (x ← y)::Int; 10; end