iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 22
0
Modern Web

學會Elm寫前端系列 第 22

22 elm Q&A: 那些奇怪的符號是什麼?

奇怪的符號們 >>, <<, |>, <|

如果你打開其他人的elm code 常常會看到這些符號,或是在其他的functional programming 也常有這些符號。 (<<), 其實在 haskell裡就是 (.)(<|) 在 haskell 裡就是 ($) , 而 (|>)(<|)
在elixir也有,叫 pipe operator,我們在json decoder 裡時也有用到這個符號。

pipe opeartor

Elm兩個都有也是很有趣的,haskell 只有類似 (<|) 的 function。其實很簡單,就想想你要省略括號就是了,譬如

leftAligned (monospace (fromString "code"))
leftAligned <| cmonospace <| fromString "code"

這樣就不用寫很多括號,而 (|>) 就是反過來就是啦。

"code"
|> fromString
|> cmonospace
|> leftAligned

這樣也比較直覺,也就是說,你先把"code" 給fromString處理,完了之後在當 cmonospace 的argument,再處理完給leftAligned

functional composition

(<<) : (b -> c) -> (a -> b) -> a -> c
(>>) : (a -> b) -> (b -> c) -> a -> c

這個在你高中數學一定會學過,把兩個涵數合併在一起 f(g(x)),我們寫成elm就可以寫成 (g << f) == (\x -> g ( f x)), 我們習慣的是 (<<) , 但如果你想要反過來表達的話就是 (>>)

如果你在javascript知道 Currying 的話, composition就是在這個時候用上的,譬如 not << isEven << sqrt ,這個我們傳入 5 和 6。


上一篇
21 elm Q&A: 如何在elm取得此刻的時間?
下一篇
23 elm Q&A: 聽說和react, redux有關係?
系列文
學會Elm寫前端30

尚未有邦友留言

立即登入留言