我剛剛從this wikibook開始學習Haskell,並且在練習中遇到了一些問題。部分函數在Haskell中的應用
具體來說,如我所料
parseNumber :: Parser LispVal
parseNumber = (many1 digit) >>= (return $ Number . read)
除非我微微
parseNumber :: Parser LispVal
parseNumber = (many1 digit) >>= (\n -> return $ Number . read $ n)
我希望有人能解釋爲什麼return $ Number . read
不計算爲同一拉姆達變化它下面不工作函數,我明確地在第二個定義中創建,因爲我認爲這正是部分函數評估在使用無點樣式代碼時所做的(顯然不是!)
感謝您的任何幫助,希望它不是另一個初學者的monad問題...
'return。號碼。閱讀'應該工作,但。 – Ingo