2013-10-17 3 views
3

CoffeeScript에는 Haskell의 $ 연산자와 비슷한 개념이 있습니까? 주제에 대해 아무 것도 찾을 수없는 것 같지만 GitHub에 관한 문제를 한 번 본 것 같습니다. 내가하고 싶은 무엇

foo = bar $ baz 1 2 

대신 위의 GitHub의 문제를 게시 읽기

foo = bar (baz 1 2) 
+4

https://github.com/jashkenas/coffee-script/issues/1614 – Vladimir

+0

배관 운영자가 <| LiveScript : http://livescript.net/ – homam

답변

0

의 쓰기, 크게 두 번 이상 논의 된 것으로 보인다. 그러나 결론은 없지만 그것이 포함될 것으로 보이는 것은 아닙니다.

한 명의 사람 alexkg은 커피 용 his own fork<-이라는 기능을 구현했습니다.

1

하스켈에서 정확히 $이 무엇을하는지 혼란 스러울 것 같습니다.

에서 볼 수 있듯이 its type - (a -> b) -> a -> b - $은 약 2 개의 인수 만 "알고"있습니다.

따라서 foo = bar $ baz 1 2 예에서 $은 약 baz 1 2을 "알지 못합니다".

그룹화가 발생하는 이유는 "함수 응용 프로그램이 중절 연산자"(source)보다 우선 순위가 높기 때문입니다.

foo = bar . baz 1 2 -- also parsed as `bar (baz 1 2)` 
        -- because of function application's high precedence 

는 따라서 유일한 $는 두 개의 인수를 두 번째로 첫 번째 적용이다 않습니다 그래서 중위 연산자 .를 사용하여 같은 표현은, 예를 들어, 정확히 같은 방식으로 구문 분석됩니다. Coffeescript가 고차원 함수를 허용하는 한 $을 구현하는 것은 간단합니다. 당신이 알아 차린 나머지 행동은 하스켈 언어의 일부입니다.

관련 문제