小编poc*_*hen的帖子

haskell - 翻转修复/修复

>>>flip fix (0 :: Int) (\a b -> putStrLn "abc")
Output: "abc"
Run Code Online (Sandbox Code Playgroud)

这是使用的简化版本flip fix.
我在一些youtube视频中看到了这种方式,可能来自Google技术谈话或其他一些谈话.

有人可以给我一些指针(不是一些内存地址,谢谢!)究竟fix是什么.我知道官方网站上的文档的一般定义.我已经在互联网上浏览了很多东西,但却找不到一个全面且易于理解的答案.

flip fix对我来说,这看起来像个谜.那个特定的函数调用实际发生了什么?

顺便说一下,我2个月前才选择了Haskell.而且我不擅长数学:(


这是完整的代码,由进行该演示的人共享,如果有人感兴趣:

(哦,这是解释游戏的维基链接mastermind 点击)

module Mastermind where

import Control.Monad
import Data.Function
import Data.List
import System.Random

data Score = Score
  { scoreRightPos :: Int
  , scoreWrongPos :: Int
  }
  deriving (Eq, Show)

instance Read Score where
  readsPrec _ r = [ (Score rp wp, t)
                  | (rp, s) <- readsPrec 11 r
                  , (wp, t) <- …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming fixpoint-combinators

10
推荐指数
1
解决办法
713
查看次数

与多核时代的迭代相比,递归是首选吗?

或者说,多核CPU是否比迭代更快地处理递归?

或者它只取决于一种语言在机器上的运行方式?与执行简单迭代相比,c执行函数调用成本较高.

我有这个问题,因为有一天我告诉我的一个朋友,递归并不是任何可以加速程序的神奇魔法,他告诉我,使用多核CPU递归可能比迭代更快.

编辑:

如果我们考虑最受递归喜欢的情况(数据结构,函数调用), 递归的速度是否更快?

编辑10月12日:

那么多核cpu如何表现呢?现在的软件都是针对多核cpu编程的吗?

iteration cpu recursion multicore

5
推荐指数
1
解决办法
453
查看次数

"按名称呼叫"会减慢Haskell的速度吗?

我认为它没有.

我的理由是Haskell是纯函数式编程(没有I/O Monad),如果"名称"相同,他们可以使每个"名字调用"使用相同的评估值.

我对实现细节一无所知,但我真的很感兴趣.
详细解释将非常感谢:)

顺便说一句,我试过谷歌,很难得到任何有用的东西.

performance implementation haskell callbyname

2
推荐指数
1
解决办法
659
查看次数