【发布时间】:2018-04-17 19:13:15
【问题描述】:
我正在尝试根据 Haskell Map for Treeshammar 的回答在 Tree 类型上定义 fmap
他的定义派生了函子,它使用了我只是模糊熟悉的编译指示。他的定义是
{-# LANGUAGE DeriveFunctor #-}
data Tree a = Leaf a | Node (Tree a) (Tree a)
deriving (Functor, Show)
我无法在 GHCI 中使用编译指示和定义。以下是我的三个错误尝试,如果有任何反馈,我将不胜感激!
第一次尝试:
Prelude> {-# LANGUAGE DeriveFunctor #-}
Prelude> data Tree a = Leaf a | Node (Tree a) (Tree a)
Prelude> deriving (Functor, Show)
<interactive>:30:5: parse error on input ‘deriving’
第二次尝试:
Prelude> {-# LANGUAGE DeriveFunctor #-}
Prelude> data Tree a = Leaf a | Node (Tree a) (Tree a) deriving (Functor, Show)
<interactive>:32:57:
Can't make a derived instance of ‘Functor Tree’:
You need DeriveFunctor to derive an instance for this class
In the data declaration for ‘Tree’
第三次尝试:
Prelude> :{
Prelude| {-# LANGUAGE DeriveFunctor #-}
Prelude| data Tree a = Leaf a | Node (Tree a) (Tree a)
Prelude| deriving (Functor, Show)
Prelude| :}
<interactive>:35:1: parse error on input ‘data’
【问题讨论】:
-
这是stackoverflow.com/questions/12584884/… 的更一般的副本,尽管它的措辞完全不同