我已經通過本教程的工作我的方式:耶索德形式語法
http://pbrisbin.com/posts/developing_web_applications_with_yesod/
lemonadeForm :: Form Lemonade
lemonadeForm = renderTable $ Lemonade
<$> pure Nothing
<*> areq (selectField optionsEnum) "Size" Nothing
<*> pure 0.0
<*> areq intField "Quantity" Nothing
我對這個語法的幾個問題。
1)它在本教程的後面幾行說:「使用純的行在處理時提供值,但實際上不顯示任何字段。」這是否意味着形式不知道Nothing
和0.0
的含義?
2)語法<$>
和<*>
分別是什麼意思?
以下解釋對我有幫助:<$>是函數$是函數的功能:最後讀到<$>的左邊。至少這有助於我理解發生了什麼。對於<*>不幸的是,我無法想出一個有用的類比:按照@sibi建議的類型進行操作。 – dganti
我讀「<$>」和「<*>」最簡單的方法就是正常的功能應用。當你有這樣一個表達式時,你必須認識到作者「想要」寫的是'fabc',但不能因爲所有'f','a','' b','c'被包裹在某種效果中。然後在這個有效的上下文中函數應用。閱讀LYAH可以更好地理解Functors和Applicative Functors,它們是Haskell中重要的組織和設計工具。 – acomar