더 수학적 방법 인 것 같습니다
기능적 언어는 람다 미적분학에서 영감을 얻었습니다 . 이 필드에서 괄호는 기능 적용에 사용되지 않습니다.
또한 후자의 스타일은 괄호가없는 것보다 훨씬 명확하고 읽기 쉽다고 생각합니다.
가독성은 보는 사람의 눈에 있습니다. 당신은 그것을 읽는 데 익숙하지 않습니다. 수학 연산자와 조금 비슷합니다. 연관성을 이해하면 표현의 구조를 명확하게하기 위해 몇 개의 파렌 만 있으면됩니다. 종종 필요하지 않습니다.
카레 또한이 규칙을 사용하는 좋은 이유입니다. haskell에서 다음을 정의 할 수 있습니다.
add :: Int -> Int -> Int
add x y = x + y
x = add 5 6 -- x == 11
f = add 5
y = f 6 -- y == 11
z = ((add 5) 6) -- explicit parentheses; z == 11
Parens를 사용하면 (커리 f(5, 6)
되지 않음) 또는 f(5)(6)
(커리 됨)의 두 가지 규칙을 사용할 수 있습니다 . 하스켈 구문은 카레 개념에 익숙해지는 데 도움이됩니다. 아직 커리되지 않은 버전을 사용할 수 있지만 결합기와 함께 사용하는 것이 더 고통 스럽습니다.
add' :: (Int, Int) -> Int
add' (x, y) = x + y
u = add'(5, 6) -- just like other languages
l = [1, 2, 3]
l1 = map (add 5) l -- [6, 7, 8]
l2 = map (\x -> add'(5, x)) l -- like other languages
두 번째 버전에서 x를 변수로 등록하는 방법과 하위 표현식은 정수를 취하고 5를 더하는 함수라는 것을 주목하십시오. 카레 버전은 훨씬 가볍지 만 많은 사람들이 더 읽기 쉬운 것으로 간주합니다.
Haskell 프로그램은 추상화를 정의하고 구성하는 수단으로 부분 적용 및 결합기를 광범위하게 사용하므로 장난감 예제가 아닙니다. 좋은 기능 인터페이스는 매개 변수 순서가 친절한 카레 사용을 제공하는 인터페이스입니다.
또 다른 요점 : 매개 변수가없는 함수는로 호출해야합니다 f()
. haskell에서는 불변의 게으른 평가 된 값만 조작하기 때문에을 쓰고 f
값을 필요할 때 계산 해야하는 값으로 간주하면됩니다. 평가에는 부작용이 없으므로 매개 변수가없는 함수와 반환 값에 대해 다른 표기법을 사용하는 것은 의미가 없습니다.
함수 적용에 대한 다른 규칙도 있습니다.
- Lisp : (fx)-외부 괄호 접두사
- 넷째 : xf-접미사