Tag: 哈斯克尔

我可以约束一个types的家庭吗?

在我的这个最近的回答中 ,我碰巧揭开了这个古老的板栗(一个很老的程序,其中一半是由莱布尼兹在十七世纪写成的,七十年代由我父亲写在计算机上)。 为了节省空间,我会省略现代的一点。 class Differentiable f where type D f :: * -> * newtype K ax = K a newtype I x = I x data (f :+: g) x = L (fx) | R (gx) data (f :*: g) x = fx :&: gx instance Differentiable (K a) where type D (K a) […]

Haskell与Prolog的比较

在Prolog中比在Haskell中更好的解决什么样的问题? 这两种语言的主要区别是什么? 编辑 是否有一个Haskell库(一种逻辑解算器),可以模仿Prolog的function?

TVar和TMVar的区别

我已经看到了TVar是一个简单的容器,而TMVar和MVar是一样的,意思是它有一个锁等,但是在STM monad中。 我想知道为什么这是必要的,因为STM的想法是不需要锁。 那么,如果你有一个像[Handle]types的套接字句柄的列表,你希望在forkIO之间使用哪个线程呢?

积分运算符“与div”

types类Integral有两个操作quot和div ,但在Haskell 2010语言报告中没有指定他们应该做什么。 假设div是整数除法,那么换句话说, div ,“ div quot的目的是什么? 你什么时候使用一个,什么时候使用另一个?

除Monad外,还有哪些其他方式可以用纯粹的function语言来处理?

于是我开始把头围绕Monads(在Haskell中使用)。 我很好奇IO或状态可以用纯粹的function语言(理论上还是现实上)处理的其他方式。 例如,有一种叫做“水银”的逻辑语言,它使用“效应types”。 在像Haskell这样的程序中,效果types的工作将会如何? 其他系统如何工作?

Monad Transformers vs将parameter passing给函数

我是Haskell的新手,但了解Monad变形金刚如何使用。 然而,我仍然有困难抓住他们声称的优势,而不是将parameter passing给函数调用。 基于维基单片变形金刚解释 ,我们基本上有一个configuration对象定义为 data Config = Config Foo Bar Baz 并传递给它,而不是写这个签名的函数 client_func :: Config -> IO () 我们使用ReaderT Monad Transformer并将签名更改为 client_func :: ReaderT Config IO () 拉Config只是一个电话ask 。 函数调用从client_func c改变到runReaderT client_func c 精细。 但为什么这使我的应用程序更简单? 1 – 我怀疑Monad变形金刚有趣的事情,当你缝​​合很多function/模块一起形成一个应用程序。 但这是我的理解停止的地方。 有人可以摆脱一些光? 2-我找不到有关如何在Haskell中编写大型模块化应用程序的文档,其中模块公开了某种forms的API并隐藏了它们的实现,以及(部分)将其自己的状态和环境隐藏到其他模块中。 任何指针? (编辑:真实世界哈斯克尔说:“这种方法[Monad变形金刚] …扩展到更大的程序”,但没有明确的例子certificate这一说法) 编辑下面克里斯泰勒答案下面 Chris完美地解释了为什么在Transformer Monad中封装Config,State等等提供了两个好处: 它阻止了一个更高级别的函数必须保持它的types签名所需的所有参数,它调用的(子)函数不是自己使用的(参见getUserInput函数) 从而使更高级别的function对变压器Monad内容的变化更有弹性(比如说你想添加一个Writer来提供一个更低级别的function) 这是以改变所有函数的签名为代价的,以便它们在Transformer Monad中运行。 所以问题1被完全覆盖。 谢谢Chris。 问题2现在在这个SOpost中回答

什么样的Haskell主题需要用真实世界的Haskell风格来解决?

RWH出来已经有一段时间了( 差不多3年 )。 在networking书的增量写作之后(我认为这是写书的最好方法之一)之后,我急于得到我的副本。在所有相当学术的论文中,对于一个哈斯克尔学生通常遇到! 在一些旅行中,这是一个坚强的伙伴,我经常回头看。 尽pipe如此,我的副本开始看起来很蹩脚 ,尽pipe大部分内容仍然有效,但在Haskell世界中还有很多新的话题值得用相似的方式来报道。 考虑到RWH曾经(现在还有)的影响,我真心希望有一天会有续集:)一些续集的主题会立刻浮现在脑海里: Iteratees 更多关于哈斯克尔的并发编程 懒惰评估的优点和危险 可能涵盖一些处理这个问题的公共图书馆 特别是懒惰的io 新的ghcfunction (例如新的I / Opipe理器,LLVM代码生成器) 记忆化 .. haskell社区需要RWH风格的解释是什么? 这是迄今为止的build议总结: 概念 迭代/懒IO 箭头 ghc活动经理 技术 generics(uniplate,syb) 元编程(模板Haskell) 数据结构(使用function数据结构,devise数据结构) EDSL(deviseEDSL) 记忆化 用monadsdevise 命令式编程的最佳实践 工具 ThreadScope 先进的FFI工具(c2hs,使用来自C的Haskell) 阴谋 黑线鳕 hoogle 调整运行时间,尤其是 GC标志 巨灵 图书馆 数组和数组编程(vector,repa,hmatrix) 数字(随机数字) 并行编程(The Par monad) unicode和语言环境(文本,文本icu) parsing(attoparsec,tagsoup) networking(snap,yesod) 网页材料(模板) 持久性(尤其是非sql存储绑定) graphics(开罗,sdl,opengl) xml(haxml) […]

在游戏开发中使用函数式编程的好资源?

我对这个函数式编程范例还很陌生,但到目前为止,我还是喜欢它。 由于我正在进行游戏开发,所以我想用纯function的编程风格来编写一些游戏。 我不介意这种语言 – 无论是Erlang,Haskell,Lisp,还是Ruby(我发现它支持函数式编程特性)。 那么很显然,要学习函数式编程(实际上是什么),最好的build议就是学习函数式语言并编写大量程序。 但是我正在寻找的是在游戏和游戏引擎(2D或3D)中使用函数式编程的一些资源。 那么,你是否知道任何函数式编程文章/书籍/博客/关于在实际游戏中使用它,或者使用函数式编程语言devise简单的游戏引擎,以及游戏和游戏引擎在这个function环境中的所有互动? 请不要像“刚开始编写简单的东西在function上开始,然后逐渐地find你”。 正如我刚才所说,这是显而易见的,但我在这里问的是一些关于这个话题的资源,如果有的话。 谢谢!

什么是pipe道/pipe道试图解决

我已经看到人们推荐各种惰性IO相关任务的pipe道/导pipe库。 这些库完全解决什么问题? 另外,当我尝试使用一些与哈克相关的库时,很可能有三个不同的版本。 例: attoparsec pipe道-attoparsec attoparsec-pipe道 这使我困惑。 对于我的parsing任务,我应该使用attoparsec或pipes-attoparsec / attoparsec-conduit? pipe道/导pipe版本与普通香草相比有什么好处?

用Monad变形金刚避免电梯

我有一个问题,非常适合使用堆栈的MT(甚至一个MT)通过IO。 一切都很好,只是在每个动作之前使用电梯是非常烦人的! 我怀疑这件事真的没有什么可做,但我想我会问。 我知道提升整个块,但如果代码真的是混合types呢? 如果GHC放入一些句法糖(例如<-$ = <- lift ),会不会很好?