분명히 Elm 코드는`()` 사용하지 않을 정도로 멋지다.

취미로 Elm 만져서, 잘 모르지만 어쩐지 움직이는 것 같은 느낌으로 하고 있는, 함수형 언어 아마추어의 다이나믹 HTML 코더인 나 시선의 내용입니다.
따라서 얕은 학자가 함수 유형을 말할 때 더 어려워지는 유형은 앞으로 읽지 마십시오.

그런데 본제에 들어가지만, 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 |> funcfunc1 (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의 체인과 같은 느낌으로 비교적 확고해질지도.

요약



흠, 뭐, 잘 모르겠지만, 그렇게 쓰면 좋네, 라는 느낌의 지능이지만,
우선 () 붙이지 않는 것이 멋지다고 하는, 그 생애에게는 심파시를 느꼈다, 라고 하는 이야기.

좋은 웹페이지 즐겨찾기