在Python中,Haskell的zipWith函数的类比是什么?
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
Run Code Online (Sandbox Code Playgroud) 例如,我想创建一个整数三元组的MyType类型.但不仅仅是三个整数的笛卡儿积,我希望该类型代表所有(x,y,z),使得x + y + z = 5
我怎么做?除了使用just(x,y),因为z = 5 - x - y
同样的问题,如果我有三个构造函数A,B,C和类型应该是所有(A x,B y,C z),使得x + y + z = 5
如果我想更改函数中参数的顺序怎么办?
有flip
:
flip :: (a -> b -> c) -> b -> a -> c
Run Code Online (Sandbox Code Playgroud)
但我不知道如何让它适用于更多的论点.是否有一般方法来置换参数?
我试图理解"Löb和möb:Haskell中的奇怪循环",但是现在意义正在逐渐消失,我只是不明白它为什么会有用.只是召回功能loeb
定义为
loeb :: Functor f => f (f a -> a) -> f a
loeb x = go where go = fmap ($ go) x
Run Code Online (Sandbox Code Playgroud)
或等效地:
loeb x = go
where go = fmap (\z -> z go) x
Run Code Online (Sandbox Code Playgroud)
在文章中有一个带有[]
仿函数和电子表格实现的例子,但对于我来说,就像电子表格本身一样(从未使用它们).
虽然我理解电子表格的东西,但我认为尽管有列表,但对于我和其他人来说,有更多的例子会有所帮助.是否有任何应用程序loeb
的Maybe
或其他函子?
在控制台中指示工作进度的最简单方法是什么?输出百分比就足够了,不需要进度条.
使用just print
会生成很多行,我只想在终端中输入一个字符串.
想象一下,我想在一个数组上映射一个函数,但该函数不仅具有类型,
a -> b
而且
a -> Int -> b
函数也采用索引.我怎么做?
纯伪随机生成器(统一双打)的推荐Haskell包是什么?
我首先对一个方便的API感兴趣,速度也会很好.
也许mwc-random?
我真的很喜欢它Repa
的界面,即使它的并发能力也是如此.而且我实际上需要修复数组是顺序的,因为我的数组是相对较小的数组,并且它们上的并行化是无用的,甚至是有害的.
但是我在我的程序中使用parallel-io进行并行化,所以我编译它-threaded
并运行+RTS -Nx
.这样就可以实现并行化.有没有办法关闭repa的并发功能?
嗯,在写这篇文章时我明白我不太可能需要其他任何东西DIM1
,所以也许我应该转而去Vector
.但是,问题的答案将是有用的.
我通过并行运行得到的警告信息是
Data.Array.Repa: Performing nested parallel computation sequentially.
You've probably called the 'force' function while another instance was
already running. This can happen if the second version was suspended due
to lazy evaluation. Use 'deepSeqArray' to ensure that each array is fully
evaluated before you 'force' the next one.
Run Code Online (Sandbox Code Playgroud)
force
我的代码实际上没有.
在Haskell函数->
中给出了type(),它不是代数数据类型构造函数,并且不能将它重新实现为与(->
)相同.
所以我想知道,哪些语言可以让我写出我的版本(->
)?这个属性如何调用?
UPD通过讨论重新制定了问题:
哪种语言没有->
原始类型?
为什么->
有必要的原始?
language-agnostic haskell programming-languages functional-programming function
我需要生成一个无限的随机整数流,数字在[1..n]范围内.然而,预先给出每个数字p_i的概率,因此分布不均匀.
在Haskell中有一个库函数吗?