相关疑难解决方法(0)

为什么在Haskell中将副作用建模为monad?

任何人都可以给出一些指针,说明为什么Haskell中的不纯计算被建模为monad?

我的意思是monad只是一个有4个操作的界面,那么建模副作用的原因是什么呢?

monads haskell functional-programming

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

Haskell前monadic I/O.

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

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

io monads haskell

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

()在Haskell中意味着什么

在一些Haskell代码中,我遇到了:

put :: s -> m ()
Run Code Online (Sandbox Code Playgroud)

()意味着什么?

我使用搜索引擎,但找不到()正确处理的搜索引擎.

haskell

11
推荐指数
4
解决办法
3175
查看次数

为什么Haskell有非严格的函数(语义)?

根据这篇关于haskell中指称语义的文章 所有类型都有底部,函数f:A-> B是严格的,如果它将类型A的底部映射到类型B的底部,那么它被称为非严格的其他类型.

(这让人联想到一个尖刻的类别,其中态射保留了基点).

为什么Haskell有非严格的函数,而标准ML没有?

computer-science haskell functional-programming category-theory

5
推荐指数
3
解决办法
945
查看次数

Monads,组成和计算顺序

所有monad文章经常陈述,monad允许你按顺序排列效果.

但是简单的构图怎么样?是不是

f x = x + 1
g x = x * 2

result = f g x
Run Code Online (Sandbox Code Playgroud)

需要g x先计算f ...

单子会做同样的事情,但处理效果?

monads haskell composition

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

Haskell中的IO实现

我知道,我们不能独立实现IO monad,但我不知道为什么.此代码试图使用函数式语言实现命令式范例.你能解释一下这个例子和真正的IO之间的区别吗?看起来函数main实现了正确的动作顺序并且仍然是懒惰的.

import System.IO.Unsafe   

data Io a = Io a 

runIO :: Io a -> a
runIO (Io a) = a

instance Monad Io where  
 return x = Io x
 Io a >>= f = f a

-- internal side effect function 
output :: Show a => a -> Io () 
output s  = return $! unsafePerformIO $ print s

----------------------------------------------------------------

mainIO :: Io ()                             
mainIO = do output "A"  
            b <- return "B"
            output b     
            output b 
            x <- …
Run Code Online (Sandbox Code Playgroud)

io haskell semantics

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