분명히 Elm 코드는`()` 사용하지 않을 정도로 멋지다.
따라서 얕은 학자가 함수 유형을 말할 때 더 어려워지는 유형은 앞으로 읽지 마십시오.
그런데 본제에 들어가지만, Elm은 함수를 적용할 때
()
를 사용하지 않는 언어입니다.JS에서,
func(arg)
그건 Elm에서
func arg
라고 씁니다.
그러나 이런 JS 코드
func1(func2(arg))
Elm으로 표현하려고 할 때,
func1 func2 arg
라고 쓰면 다른 거동이 됩니다. 이것은
func1(func2)(arg)
에 해당합니다.
Elm은 산수의 식의 우선 순위를 붙이는 느낌으로
()
를 사용할 수 있으므로,func1 (func2 arg)
라고 쓰는 것이 정답입니다.
하지만, 숙련된 Elmers의 코드를 봐도 이 쓰는 방법은 별로 보이지 않네요.
대신 이런 걸 잘 봅니다.
func1 <| func2 arg
<|
라고 뭐야 물고기의 머리인가요?어라,
func1 <| func2 arg
라고 func1 (func2 arg)
<| 뭐야.
문서에 의하면 <|
는 후방 함수 적용(어째서 그것?) 하는 함수로, 이런 일이라고 합니다.
(<|) : (a -> b) -> a -> b
Elm의 유형을 보는 방법을 간략하게 설명하면,Int
는 "Int를 반환하는 함수"Int -> String
는 "Int를 인수로 취하고 String을 반환하는 함수"Bool -> Int -> String
는 "Bool과 Int를 인수로 취하고 String을 반환하는 함수"(Bool -> Int) -> String
는 ""Bool을 인수로 취하고 Int를 반환하는 함수"를 인수로 취하고 String을 반환하는 함수"
라고 읽으면 좋다. 또, 타입의 사촌을 a처럼 소문자로 쓰면 타입 변수가 되어 제네릭이 되는 것 같다.
그러므로 <|
는 "임의 유형 a를 인수에 대해 임의 유형 b를 반환하는 함수"와 "같은 유형 a"를 인수에 대해 "같은 유형 b"를 반환하는 함수입니다! 알다시피!
저 정도의 고졸 히모노로가 된다면 진짜로 말하고 있는 의미를 모릅니다만, 요점은 함수 적용의 별칭이라고 합니다.
게다가 중간 함수와 함께 인수 사이에 쓸 수 있는 함수라고 합니다. 자유롭다.
즉 func arg
== (<|) func arg
== func <| arg
뭐라고.
이것이라고 사용하는 의미가 없지만, func1 (func2 arg)
그렇다면 <|
사용하면,
평가의 순서가 바뀐다든가로 func1 <| func2 arg
와 ()
실제로, Elm에는 튜플이라는 형식이 (a, b)
같은 문법이므로, 그것과 혼동해서 혼동하기 때문에 확실히 ()
사용하지 않는 편이 알기 쉬울지도.
그리고이 물고기의 머리에는 전방 함수를 적용하는 오른쪽 버전도 있습니다. 넙치와 카레이적인 일일까.
(|>) : a -> (a -> b) -> b
func arg
== (|>) arg func
== arg |> func
func1 (func2 arg)
를 func2 arg |> func1
라고 쓸까 func1 arg <| func2
라고 쓸지만의 차이라고 생각합니다만, 숙련 Elmers의 경향으로서는,func1 (func2 (func3 (func4 (func5 (func6 arg)))))
같이 적용해 버리고 있을 때는
func6 arg
|> func5
|> func4
|> func3
|> func2
|> func1
같은 느낌으로 카레이를 사용하고 있는 것을 자주 보는 생각이 듭니다.
JS의 Promise의 체인과 같은 느낌으로 비교적 확고해질지도.
요약
흠, 뭐, 잘 모르겠지만, 그렇게 쓰면 좋네, 라는 느낌의 지능이지만,
우선 ()
붙이지 않는 것이 멋지다고 하는, 그 생애에게는 심파시를 느꼈다, 라고 하는 이야기.
Reference
이 문제에 관하여(분명히 Elm 코드는`()` 사용하지 않을 정도로 멋지다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/boiyama/items/7b4ac2d69ca7508f7f35
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func6 arg
|> func5
|> func4
|> func3
|> func2
|> func1
흠, 뭐, 잘 모르겠지만, 그렇게 쓰면 좋네, 라는 느낌의 지능이지만,
우선
()
붙이지 않는 것이 멋지다고 하는, 그 생애에게는 심파시를 느꼈다, 라고 하는 이야기.
Reference
이 문제에 관하여(분명히 Elm 코드는`()` 사용하지 않을 정도로 멋지다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/boiyama/items/7b4ac2d69ca7508f7f35텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)