我的Haskell函数在complie上崩溃了

Kyl*_*ean 0 haskell

我试图模拟e ^ x的泰勒多项式

---Macularian for e^x 
e :: (Num a) => a -> Int -> a
e value precsion = sum $ take precsion [((x^n) / product [1..n]) | x <- value, n <- [0..]]
Run Code Online (Sandbox Code Playgroud)

这是我的错误

Main.hs@3:73-3:78不能从e :: Num a => a - > Int - > a的类型签名绑定的上下文(Num a)中推断出(a~ [a]) home/app/isolation-runner-work/projects/75872/session.207/src/Main.hs:2:6-29 a是一个刚性类型变量,由e :: Num a => a的类型签名绑定> Int - > a at /home/app/isolation-runner-work/projects/75872/session.207/src/Main.hs:2:6相关绑定包括value :: a(绑定在/ home/app/isolation -runner-works/projects/75872/session.207/src/Main.hs:3:3)e :: a - > Int - > a(绑定在/ home/app/isolation-runner-work/projects/75872 /session.207/src/Main.hs:3:1)...

Eri*_*ikR 5

这部分:x <- value表示这value是一个列表.如果您将其更改为let x = value(或只是重命名valuex您将修复该特定的编译错误:

e x precision = take precision [ ...formula involving x and n... | n <- [0..] ]
Run Code Online (Sandbox Code Playgroud)

然后,您可能会遇到涉及您的类型签名的另一个编译器错误,因此我会对此进行注释,然后ghci告诉您签名应该使用:type命令.