相关疑难解决方法(0)

如何在Haskell中定义Lisp的应用?

不应该像Haskell这样的惰性语言允许这个定义,其中函数是curry?

apply f [] = f
apply f (x:xs) = apply (f x) xs
Run Code Online (Sandbox Code Playgroud)

它基本上是一个将给定函数应用于给定参数列表的函数,并且很容易在Lisp中完成.有没有解决方法?

haskell types type-inference currying variadic-functions

39
推荐指数
4
解决办法
2663
查看次数

我需要什么类型的签名才能将函数列表转换为haskell代码?

可能重复:
为什么haskell中不允许这样的函数定义?

我做了一个名为haskell的函数funlist.它的作用是获取起始值和函数列表,并将列表中的所有函数应用于起始值.

funlist thing [function] = function thing
funlist thing (function:functions) = funlist (function thing) functions
funlist _ _ = error "need a list of functions"
Run Code Online (Sandbox Code Playgroud)

这个函数的问题在于它有一种类型funlist :: t -> [t -> t] -> t.该类型意味着虽然ghc将允许不将起始值转换为完全不同类型的函数列表(例如[sin,cos,tan]将被允许​​),但是将起始值转换为不同类型(例如show)的函数将生成错误因为该功能与类型签名不匹配.

这不是该功能应该如何工作.它应该能够获取更改起始值类型的函数列表(例如[sin,show]).这个函数基本上转换funlist 5 [sin,cos,tan,isInfinite,show]show $ isInfinite $ tan $ cos $ sin $ 5,而后者工作,前者则不然.

有什么办法可以让这个功能正常工作吗?

编辑:我知道.>>>,我只是想知道,如果有一种方法,使这项工作.

haskell

3
推荐指数
3
解决办法
316
查看次数