我的目标是创建一个函数,它接受参数,计算结果,并以元组的形式返回修改后的结果。
我的第一次尝试看起来像这样:
f x = (x,f') where
f' y = (y+1,f')
cl num func = let (nu,fu) = func num in nu:fu num
字符串
如果我用0和f调用函数cl,我想要的结果是
[0,1,2,3,4,5,6,7,8,9,10,11,12,13 ... infinity]
型
不幸的是,haskell不能构造无限类型。我很难设计出另一种方法来实现它。也许,我只是从坏的一面看问题,这就是为什么我发布这个问题。
编辑:这是我的功能状态:
newtype InFun = InFun { innf :: Int -> (Int,InFun) }
efunc x = (x,InFun deep) where
deep y = (y+1, InFun deep)
crli n (InFun f) = let (n',f') = f n in n':crli n f'
main = putStrLn $ show (take 10 (crli 0 (InFun efunc)))
型
结果是[0,1,1,1,1,1,1,1,1]。这是更好的,但是,我希望通过递归深层函数进行修改。
2条答案
按热度按时间qmelpv7a1#
也许你正在寻找
字符串
然后
型
或
型
或更复杂的修饰(咖喱化)
型
然后
型
k2arahey2#
可以使用
iterate
:字符串