在Haskell中,当我们讨论类型声明时。
我见过->和=>。
举个例子:我可以自己声明类型。
addMe :: Int -> Int -> Int
addMe x y = x + y
而且它工作得很好。
但是如果我们看一下:t sqrt,我们会得到:
sqrt :: Floating a => a -> a
我们在什么时候使用=>,什么时候使用->?我们什么时候用“胖箭头”,什么时候用“瘦箭头”?
例如,我在haskell中有一个函数:
foo :: Int a => (a -> a -> b) -> a -> b
我想通过第一个参数来构造匹配模式:
foo (+) a = a + a
foo (-) a = a - a
但是,此代码会导致编译器错误。我试着用警卫,但也没什么用。是否有可能实现这样的模式匹配?