我试图模拟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)...
这部分:x <- value表示这value是一个列表.如果您将其更改为let x = value(或只是重命名value为x您将修复该特定的编译错误:
e x precision = take precision [ ...formula involving x and n... | n <- [0..] ]
Run Code Online (Sandbox Code Playgroud)
然后,您可能会遇到涉及您的类型签名的另一个编译器错误,因此我会对此进行注释,然后ghci告诉您签名应该使用:type命令.