2
私はHaskellで私のリストを実装したいと思います。 しかし、私はこれを行うことはできません。 <*>
の実装はHaskel - リストの<*>の実装
data List a = a :+ (List a) | Empty deriving Show
infixr 9 :+
instance Functor List where
fmap _ Empty = Empty
fmap f (a :+ xs) = f a :+ fmap f xs
instance Applicative List where
pure x = x :+ Empty
Empty <*> _ = Empty
(f :+ fs) <*> xs = fmap f xs :+ (fs <*> xs) -- Error
main :: IO()
main = do
print $ 1 :+ 2 :+ 3 :+ Empty
print $ fmap (^2) (1 :+ 2 :+ 3 :+ Empty)
print $ ((+1) :+ (*2) :+ (^2) :+ Empty) <*> (1 :+ 2 :+ 3 :+ Empty)
の原因となるエラーが
である「B」 実際の型「リストB」で期待される型「B」と一致しませんでした
...に縛ら剛性型変数であります
':+'コンストラクタを使って2つのリストを連結しようとしています。 – zaquest
ありがとう!今、私は分かる。 – redstone