首页 文章
  • 173 votes
     answers
     views

    Scala中foldLeft和reduceLeft之间的区别

    我已经学会了 foldLeft 和 reduceLeft 之间的基本区别 foldLeft: 必须传递 初始值 reduceLeft: 将集合的第一个元素作为初始值如果集合为空,则 抛出异常 还有其他区别吗? 有两种方法具有相似功能的任何特定原因?
  • 10 votes
     answers
     views

    foldl / foldr查询

    我是Haskell的初学者,即使在阅读了foldr / foldl的几个解释之后,我也无法理解为什么我会在下面得到不同的结果 . 解释是什么? Prelude> foldl (\_ -> (+1)) 0 [1,2,3] 4 Prelude> foldr (\_ -> (+1)) 0 [1,2,3] 3 谢谢!
  • 9 votes
     answers
     views

    如何用foldl实现zip(用急切的语言)

    我最近认识的一个Clojure程序员说它是's possible to implement lots of sequence functions in terms of Clojure' s reduce (这是Haskell的 foldl' ),但令人遗憾的是,只有 reduce 才能实现 (map list xs ys) (这是Haskell的 zip ) . 现在,我很确定这不是真的:当然...
  • 19 votes
     answers
     views

    使用foldr实现zip

    我试图绕着implementing foldl in terms of foldr缠身 . (这是他们的代码:) myFoldl :: (a -> b -> a) -> a -> [b] -> a myFoldl f z xs = foldr step id xs z where step x g a = g (f a x) 我以为我会尝试使用相同的技术实...
  • 1 votes
     answers
     views

    使用foldl foldr定义函数

    我理解foldl,foldr的定义,但我对它们定义的函数有问题 . 例如,带有foldr的 Map : map f [] = [] map f l = foldr (\x xs -> f x : xs) [] l 我不明白 (\x xs -> f x : xs) . 它是map函数,foldr采用哪种?但不应该是 (\x xs -> f x : f xs) ,...
  • 6 votes
     answers
     views

    为什么foldl看起来有害,尽管它是尾递归的?

    我一直认为尾递归函数在性能方面比非尾递归版本更好 . 因此,计算列表中的项目可能会像这样实现: count:: [a] -> Int count [] = 0 count (x:xs) = 1 + count xs 但是这个函数不是尾递归的,因此不尽可能高效 . 修复是累积计数,如下所示: _count:: Num b => b -> [a] -> b _count b ...
  • 31 votes
     answers
     views

    为什么这个Haskell代码能够成功地使用无限列表?

    我有一些Haskell代码在无限列表中正常工作,但我不明白为什么它可以成功地这样做 . (我修改了我原来的代码 - 没有处理无限列表 - 在网上加入其他代码的东西,突然间我发现它有效,但不知道为什么) . myAny :: (a -> Bool) -> [a] -> Bool myAny p list = foldr step False list where ...
  • 0 votes
     answers
     views

    当文章内容经过折叠时,在容器上留下填充

    我有一个容器,里面有我的 Headers ,导航,侧边栏和文章 . 当物品的内容经过折叠时,在容器的左侧添加填充物或边缘 . 当你在内容经过折叠的页面和没有内容的页面之间进行更改时,很明显,因为容器会向右颠簸 . HTML <div id="container"> <header> Blog </header> <nav&g...
  • 1 votes
     answers
     views

    Haskell foldr导致类型错误,而foldl则不会

    我正在研究“Haskell Programming From First Principles” . 在关于折叠列表的章节中,练习5f, 当我评估 foldr const 'a' [1..5] 我明白了 没有实例(Num Char)来自字面'1' 然而,随着 foldl const 'a' [1..5] 我得到 'a' . 我知道褶皱是懒惰的, foldr 不会穿过脊柱而 foldl 会...
  • 2 votes
     answers
     views

    Ocaml中的List.Fold_Left类型系统?

    编写一个Ocaml函数 list_print : string list -> unit ,从左到右打印列表中的所有字符串: 所以让我们说我有一个Ocaml函数 list_print: string list -> unit ,从左到右打印列表中的所有字符串 . 现在正确的解决方案是: let list_print lst = List.fold_left (fun ( ) ->...
  • 44 votes
     answers
     views

    Haskell - foldl和foldr?

    foldl 和 foldr 之间的区别只是循环的方向?我认为他们做了什么,而不仅仅是朝这个方向有所不同?
  • 144 votes
     answers
     views

    foldr与foldl(或foldl')的含义

    首先,我正在阅读的真实世界Haskell说永远不会使用 foldl 而是使用 foldl' . 所以我相信它 . 但是我对何时使用 foldr 与 foldl' 朦胧 . 虽然我可以看到他们如何以不同的方式摆放在我面前的结构,但是我真的很重要,因为他们都产生了相同的答案(但是't they?). In fact, my previous experience with this construc...
  • 98 votes
     answers
     views

    foldl与具有无限列表的foldr行为

    this question中myAny函数的代码使用foldr . 当谓词满足时,它会停止处理无限列表 . 我用foldl重写了它: myAny :: (a -> Bool) -> [a] -> Bool myAny p list = foldl step False list where step acc item = p item || acc (请注意,...
  • 68 votes
     answers
     views

    使用foldr编写foldl

    在 Real World Haskell ,第4章. Functional Programming 用foldr写foldl: -- file: ch04/Fold.hs myFoldl :: (a -> b -> a) -> a -> [b] -> a myFoldl f z xs = foldr step id xs z where step x g a...
  • 8 votes
     answers
     views

    foldable的foldl / foldr实现来自haskell中的二叉树?

    我正在通过Learn You a Haskell工作,而我正在讨论幺半群 . 在本节中,作者为树定义了foldMap方法,如下所示: instance F.Foldable Tree where foldMap f Empty = mempty foldMap f (Node x l r) = F.foldMap f l `mappend` ...
  • 0 votes
     answers
     views

    Haskell,Foldr和foldl

    我一直试图绕着折叠和折叠包裹很长一段时间,我已经决定以下问题应该适合我 . 假设您将以下列表[1,2,3]传递给以下四个函数: a = foldl (\xs y -> 10*xs -y) 0 b = foldl (\xs y -> y - 10 * xs) 0 c = foldr (\y xs -> y - 10 * xs) 0 d = foldr (\y xs -> 10...
  • 14 votes
     answers
     views

    如何在Haskell中使用foldr实现删除

    这几天我一直在学习折叠 . 我可以用它们实现简单的函数,比如 length , concat 和 filter . 我所坚持的是试图用 delete , take 和 find 这样的 foldr 函数来实现 . 我用显式递归实现了这些,但对我来说,如何将这些类型的函数转换为右折叠似乎并不明显 . 我研究了Graham Hutton和Bernie Pope的教程 . 模仿Hutton的 drop...
  • 3 votes
     answers
     views

    为什么foldr在Haskell中的无限列表上工作但是foldl不工作?

    我一直在努力理解Haskell中的 foldl vs foldr vs foldl' . 我理解,当 f 在其第二个参数中是懒惰时,共识是使用 foldr ,因为它反映了列表的结构 . 当我们知道整个列表需要处理并且 f 在其参数中是严格的时候, foldl' 会更好 . 我特别感兴趣的是这样的情况: foldr (&&) False (repeat False) 返回...
  • 6 votes
     answers
     views

    如何检查BST是否有效?

    How can I check if a BST is a valid one, given its definition and using a generalized version of fold for BST? data(Ord a, Show a, Read a) => BST a = Void | Node { val :: a, left, right ::...

热门问题