小编GBX*_*XWA的帖子

递归Haskell; 牛顿的方法:为什么不融合?

我一直在尝试通过构建短程序来学习Haskell.我对函数式编程世界有些新意,但已经做了很多阅读.

我在Haskell中使用相对较短的递归函数,使用牛顿方法查找函数的根,直到浮点数允许的精度:

newtonsMethod :: (Ord a, Num a, Fractional a)  => (a -> a) -> (a -> a) -> a -> a
newtonsMethod f f' x
    | f x < epsilon = x
    | otherwise = 
        newtonsMethod f f' (x - (f x / f' x))
    where
        epsilon = last . map (subtract 1) . takeWhile (/= 1) 
            . map (+ 1) . iterate (/2) $ 1
Run Code Online (Sandbox Code Playgroud)

当我在GHCi中解释并插入时newtonsMethod (\ x -> cos x + 0.2) (\ x -> -1 …

floating-point recursion haskell calculus

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

Haskell链表清单代数数据类型

我试图实现一个Haskell代数数据类型链表(或者更准确地说是链接列表的东西,因为我不知道使用Haskell进行内存寻址的任何方法)以及用于转换到Haskell的简单列表的辅助函数输入并写下以下内容:

data LinkedList a = Nill | Node a (LinkedList a) deriving Show

hlistTolinkedList :: [a] -> LinkedList a
hlistToLinkedList [] = Nill
hlistToLinkedList x:[] = Node x Nill
hlistToLinkedList x:xs = Node (x) (stringToLinkedList xs)

linkedListToHlist :: LinkedList Char -> [Char]
linkedListToHlist (Node a b) = a ++ linkedListToString b
linkedListToHlist Nill = ''
Run Code Online (Sandbox Code Playgroud)

我得到以下编译器错误:

@5:1-5:21 Parse error in pattern: hlistToLinkedList
Run Code Online (Sandbox Code Playgroud)

我不确定我的功能有什么问题.有人请解释一下吗?

haskell linked-list algebraic-data-types

0
推荐指数
1
解决办法
204
查看次数