我無法理解這個問題的答案
練習 4.7 根據我們在上一個練習中對元組的定義,撰寫一個函式,它接受一個元組并回傳一個值(如果它是一個單元組),一個 Haskell 對(即 ('a',5))如果它是一個二元組,如果是三元組,則為 Haskell-triple,如果是四元組,則為 Haskell-quadruple。您將需要使用 Either 型別來表示這一點。
fromTuple (One a ) = Left (Left a )
fromTuple (Two a b ) = Left (Right (a,b) )
fromTuple (Three a b c ) = Right (Left (a,b,c) )
fromTuple (Four a b c d) = Right (Right (a,b,c,d))
定義為
data Either a b = Left a
| Right b
我了解 Either 型別的使用,但似乎無法了解嵌入的作業原理。在我看來,不止一個引數被傳遞給一個。
uj5u.com熱心網友回復:
我猜你對符號感到困惑
Right (Left (a,b,c))
在這里,建構式Right被傳遞了一個引數,即Left (a,b,c).
同樣,在同一個運算式中,建構式Left被傳遞一個引數,元組(a,b,c)。請注意,這是一個單獨的引數,即使它是一個元組。
最后,請注意結果型別的形式為“either-of-eithers”,即
Either (Either _ _) (Either _ _)
_必須用合適的型別(包括元組,在某些情況下)填充孔。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/465872.html
標籤:哈斯克尔
