通过阅读这个经典论文,我卡上paramorphisms。不幸的是,该部分很薄,并且Wikipedia页面什么也没说。 我的Haskell翻译是: para :: (a -> [a] -> b -> b) -> b -> [a] -> b para f base = h where h [] = base h (x:xs) = f x xs (h xs) 但是我不认为-我对类型签名或所需结果没有任何直觉。 什么是同质性,有什么有用的例子在起作用? 是的,我已经看过这些 问题,但是它们并没有直接涵盖同质性,仅指向了可能对参考有用的资源,但对学习材料却没有帮助。
我是函数编程的新手,并且最近在Learn Has a Haskell中学习,但是当我读完本章时,我陷入了以下程序: import Control.Monad.Writer logNumber :: Int -> Writer [String] Int logNumber x = Writer (x, ["Got number: " ++ show x]) multWithLog :: Writer [String] Int multWithLog = do a <- logNumber 3 b <- logNumber 5 return (a*b) 我将这些行保存在.hs文件中,但未能将其导入到我的ghci中,抱怨如下: more1.hs:4:15: Not in scope: data constructor `Writer' …
是否可以在Haskell中编写模块,该模块除了导出内部所有可见内容外,还重新导出模块? 让我们考虑以下模块: module Test where import A f x = x 此模块导出内部定义的所有内容,因此它导出f但不重新导出从导入的任何内容A。 另一方面,如果我想重新导出模块A: module Test ( module A, f ) where import A f x = x 有没有一种方法可以重新导出A和导出其中定义的所有内容,Test而无需显式编写其中定义的每个函数Test?