sma*_*qar 2 haskell functional-programming
当我Functor为Maybe 定义以下内容时,它可以正常工作
instance Functor Maybe where
fmap func Nothing = Nothing
fmap func (Just val) = Just (func val)
Run Code Online (Sandbox Code Playgroud)
我已将我的数据类型定义为:
type Vec2 = (Double, Double)
data Body = Body Vec2 Vec2 Double (Color3 Double) deriving(Eq,Ord, Show, Foldable)
Run Code Online (Sandbox Code Playgroud)
但是当我functor为它定义以下内容时:
instance Functor Body where
fmap func (Body pos vel mass clr) = Body (func pos vel mass clr)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
期待的'* - >*',但身体有点*
请确定问题是什么?
Maybe不是一种类型.Maybe Int, Maybe Char, Maybe String, ...是类型.
Body是一种类型.Body Int, Body Char, Body String, ...是胡说八道.
要成为仿函数,您data必须定义参数类型Maybe.
我猜你实际上想要一个常规函数而不是一个函子实例.但是,我不确定你真正想要实现的目标.
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |