2017-05-12 4 views
2

필자는 명령형 블록 구분 기호와 같이 엘릭서에서 "do/end"표기법을 사용 해왔다. 즉, do{과 비슷하지만 end}과 비슷합니다.엘릭서와 하스켈의 "Do"표기법

정확한 내용은 무엇입니까? 아니면 Haskell do 표기법과 같습니까? 이는 명령형 코딩을 허용하는 모나드 용 구문 설탕을 구성하는 것입니까?

답변

6

예 아니요. do/end은 키워드 목록의 구문 상 편의입니다.

이전에 if 표현식을 작성했을 것입니다. 다른 사람이 볼 것으로 예상되는 내용은 다음과 같습니다.

if predicate do 
    true_branch 
else 
    false_branch 
end 

키워드 목록을 사용하여 작성할 수도 있습니다. 다음은 정확히 동일합니다. do/end 표기법을 사용

if predicate, do: true_branch, else: false_branch 

코드의 블록을 기록 할 때 우리가 상세를 제거 할 수 있습니다. 다음 두 표현식은 동일합니다.

if predicate do 
    a = foo() 
    bar(a) 
end 

if predicate, do: (
    a = foo() 
    bar(a) 
) 

이것은 함수 정의와 동일합니다. def/2 매크로는 키워드 목록도 사용합니다. 당신은 당신은 getting started 가이드에서이에 대한 자세한 내용을보실 수 있습니다 다음

def foo, do: 5 

같은 기능을 정의 할 수 있습니다 의미.