小编Tem*_*ora的帖子

Haskell前monadic I/O.

我想知道在IO monad尚未发明的时代,Haskell中的I/O是如何完成的.任何人都知道一个例子

编辑:现代Haskell中没有IO M​​onad可以完成I/O吗?我更喜欢一个适用于现代GHC的例子.

io monads haskell

49
推荐指数
1
解决办法
4119
查看次数

Google Forms文件上传完整示例

如何允许我的观看者使用Google表单将某些文件上传到我的表单并将其保存到我的Google云端硬盘?

我正在寻找一个完整的示例:它必须告诉要添加到示例Google Form HTML源代码的代码.如何使用Google Apps脚本将查看者的文件上传到我的Google云端硬盘帐户?

file-upload google-apps-script google-forms

36
推荐指数
1
解决办法
13万
查看次数

Haskell导出大量函数

我正在编写一个具有相当多需要导出的函数的模块.此模块还具有大量数据结构.

假设我的模块包含以下内容:

module MyUtils (A(..), B(..),C(..),D(..),f1,f2,f3,f4,f5,f6) where
--Data constructors
data A = ...
data B = ...
data C = ...
data D = ...
--functions
f1 :: A -> B
f2 :: A -> B -> C
f3 :: A -> B -> D
f4 :: A -> B -> A
f5 :: A -> B -> B
f6 :: A -> B
Run Code Online (Sandbox Code Playgroud)

我在这里看到了Data.Map源 它显示它正在一个非常大的列表中导出大量函数.

但是,如果我想导出所有内容,可以使用快捷方法完成,例如,

module MyUtils (..) where
Run Code Online (Sandbox Code Playgroud)

haskell module export

9
推荐指数
2
解决办法
2063
查看次数

Haskell快速检查生成并测试玫瑰树?

我正在尝试一个简单的玫瑰树代码.

data RoseT a = Leaf a | Node a [RoseT a] deriving (Show)

instance Eq (RoseT a) where
 (==) (Leaf a) (Leaf b) = a == b
 (==) (Node a rs1) (Node b rs2) = and ((a==b): (zipWith (==) rs1 rs2))
 (==) _ _ = False 
Run Code Online (Sandbox Code Playgroud)

我可以使用quickcheck来测试Eq实例的实现吗?如果有,怎么样?如果不是,最好的选择是什么?

我还有一个功能,可以执行以下操作:

appendPath :: (RoseT a) -> (RoseT (a,[a]))
appendPath rst = appendPath' [] rst 

appendPath :: [a] -> (RoseT a) -> (RoseT (a,[a]))
appendPath' p (Leaf a) = Leaf (a,p)
appendPath' p …
Run Code Online (Sandbox Code Playgroud)

tree haskell quickcheck

6
推荐指数
1
解决办法
1399
查看次数

Haskell 相当于 Python 中的数据构造函数?

在 Haskell 中,我可以如下定义二叉树:

data Bint a = Leaf a | Branch a (Bint a) (Bint a) 
Run Code Online (Sandbox Code Playgroud)

然后我可以对它进行一些操作,如下所示:

height (Leaf a) = 1
height (Branch a l r) = 1 + (max (height l) (height r))

count (Leaf a) = 1
count (Branch a l r) = 1 + (count l) + (count r) 
Run Code Online (Sandbox Code Playgroud)

我知道 Pythondata在 Haskell中没有等效项。如果有,请告诉。

那么,如何在Python中定义一棵二叉树以及如何在其中实现上述两个功能呢?

python constructor haskell data-structures

6
推荐指数
2
解决办法
988
查看次数

Haskell如何生成这个无限列表?

我看到这段代码生成斐波纳契数.

fibs = 1:1:(zipWith (+) fibs (tail fibs))

是否可以编写类似的样式代码来生成无限列表[1 ..]?

我在Haskell网站上的循环结构上看到了这个链接.

给出了一个例子

cyclic = let x = 0 : y
         y = 1 : x
     in  x
Run Code Online (Sandbox Code Playgroud)

我试图以循环方式为我的问题定义一个列表,但是不能成功.我想要的是一个根据自身定义的列表,它在Hasekll中评估为[1 ..].

注:Haskell的[1..]计算结果为[1,2,3,4,5...],而不是[1,1,1...].

haskell list infinite cyclic

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

在 Vim 中,如何删除某处重复的所有行

我有一个包含以下行的文件:

one one
one one
two two two
one one
three three
one one
three three
four
Run Code Online (Sandbox Code Playgroud)

我想从文件中删除所有出现的重复行,只保留非重复行。因此,在上面的示例中,结果应该是:

two two two
four
Run Code Online (Sandbox Code Playgroud)

我看到了这个类似问题的答案。我尝试修改前一行,如下所示:

:syn clear Repeat | g/^\(.*\)\n\ze\%(.*\n\)*\1$/exe 'syn match Repeat "^' . escape(getline ('.'), '".\^$*[]') . '$"' | d
Run Code Online (Sandbox Code Playgroud)

但它不会删除所有出现的重复行,它仅删除一些出现的重复行。

我怎样才能在 vim 中做到这一点?或者具体来说我怎样才能在 vim 中使用 ex 做到这一点?

澄清一下,我不是在寻找sort u.

vim ex

6
推荐指数
2
解决办法
4383
查看次数

如何在Haskell中实现二进制数

我已经看到教会数字的以下数据构造函数

data Nat = Zero | Succ Nat deriving Show
Run Code Online (Sandbox Code Playgroud)

但这是一元数字.我们如何以这种方式在Haskell中实现二进制数的数据构造函数?

我试过这个:

data Bin = Zero | One | BinC [Bin] deriving Show
Run Code Online (Sandbox Code Playgroud)

在此之后,我们可以得到,十进制5编码为 BinC [One,Zero,One]

但我想我在这里遗漏了一些东西.我的解决方案似乎不像教会的解决方案那么聪明.毫不奇怪,我不是教会.一点点思考,我发现我的解决方案依赖于列表,而Nat不依赖于列表之类的任何外部结构.

我们是否可以使用Succ类型的二进制数构造函数编写类似于Church的解决方案?如果有,怎么样?我尝试了很多,但似乎我的大脑无法摆脱列表或其他一些这样的结构的需要.

binary constructor haskell church-encoding

5
推荐指数
2
解决办法
1946
查看次数

在lambda演算中编码二进制数字

在lambda演算中我没有看到任何二进制数字的提及.教会数字是一元制.我在Haskell问了一个如何做到这一点的问题:如何在Haskell 中实现二进制数 但是即使在我看到并理解了这个答案后,我也无法理解如何在纯粹的无类型lambda演算中做到这一点.

所以这是我的问题:二进制数字是否在无类型lambda演算中定义,并且还为它们定义了后继函数和前导函数?

binary haskell lambda-calculus church-encoding

5
推荐指数
2
解决办法
1449
查看次数

Haskell如何使用Language.Haskell.Interpreter来读取配置文件?

如何使用Language.Haskell.Interpreter读取给定的配置文件并分配其中给出的值以初始化程序中的变量?

我的配置文件如下:

numRecords = 10
numFields = 3
inputFile = /home/user1/project/indata.file
outputFile = /home/user1/project/outdata.file
datefmt = ddmmyyyy
Run Code Online (Sandbox Code Playgroud)

我想使用配置文件中给出的值初始化与配置文件中给出的标识符相对应的变量.

我如何使用Language.Haskell.Interpreter来完成这件事?我很困惑因为IO Monad和Interpreter Monad.这种小例子也很有用.

interpreter haskell hint configuration-files

4
推荐指数
1
解决办法
657
查看次数