Tag: 哈斯克尔

Data.Void中有什么荒谬的function对你有用?

Data.Void的absurd函数具有以下签名,其中Void是由该包导出的逻辑上无人居住的types: — | Since 'Void' values logically don't exist, this witnesses the logical — reasoning tool of \"ex falso quodlibet\". absurd :: Void -> a 我知道有足够的逻辑来得到文档的注释,这个注释对应于作为types的命题对应的有效公式⊥ → a 。 我感到困惑和好奇的是:这个函数有什么实用的编程问题是有用的? 我认为在某些情况下,作为彻底处理“不可能发生”事件的types安全的方法,这可能是有用的,但是我不太了解Curry-Howard的实际用法,告诉我们这个想法是否在正确的轨道。 编辑:最好在Haskell的例子,但如果有人想使用依赖types的语言,我不会抱怨…

Haskelltypes与数据构造器

所以我正在学习learnyouahaskell.com的 Haskell,而我无法理解types构造函数和数据构造函数。 例如,我不太了解这个之间的区别: data Car = Car { company :: String , model :: String , year :: Int } deriving (Show) 和这个: data Car abc = Car { company :: a , model :: b , year :: c } deriving (Show) 我明白,第一个是简单地使用一个构造函数( Car )来构buildCartypes的数据。 我真的不明白第二个。 另外,数据types如何定义如下: data Color = Blue | Green | […]

Haskell中`mod`和`rem`的区别

Haskell中mod和rem的区别是什么? 两者似乎都给出了相同的结果 *Main> mod 2 3 2 *Main> rem 2 3 2 *Main> mod 10 5 0 *Main> rem 10 5 0 *Main> mod 1 0 *** Exception: divide by zero *Main> rem 1 0 *** Exception: divide by zero *Main> mod 1 (-1) 0 *Main> rem 1 (-1) 0

速记方法只能修改logging中的一个字段(复制一个logging只能改变一个字段)?

假设我有以下loggingADT: data Foo = Bar { a :: Integer, b :: String, c :: String } 我想要一个接受logging并返回一个logging(相同types)的函数,其中除了一个字段之外,其他字段的值都与作为parameter passing的值相同,如下所示: walkDuck x = Bar { a = ax, b = bx, c = lemonadeStand (ax) (bx) } 以上的工作,但是对于有更多字段(比如说10 )的logging来说,创build这样一个函数将需要大量的input,我觉得这是不必要的。 有没有更简单的方法来做同样的事情?

这段混淆的Haskell代码是如何工作的?

在阅读http://uncyclopedia.wikia.com/wiki/Haskell (并忽略所有“冒犯性”的东西)的时候,我偶然发现了下面一段混淆的代码: fix$(<$>)<$>(:)<*>((<$>((:[{- thor's mother -}])<$>))(=<<)<$>(*)<$>(*2))$1 当我在ghci运行这段代码时(在导入Data.Function和Control.Applicative ), ghci打印2的所有权力列表。 这段代码是如何工作的?

Reader Monad的目的是什么?

读者单子是如此复杂,似乎是无用的。 在像Java或C ++这样的命令式语言中,对于读者monad来说,没有相同的术语(如果我是对的)。 你能给我一个简单的例子,让我清楚一点吗?

Haskell:怎么发音?

你如何发音这些函数在Applicativetypes: (<*>) :: f (a -> b) -> fa -> fb (*>) :: fa -> fb -> fb (<*) :: fa -> fb -> fa (也就是说,如果他们不是经营者,他们会被称为什么?) 作为一个方面说明,如果你能把pure名字改名为对非math家更友善的话,你会怎样称呼它呢?

在纯函数式语言中,是否有algorithm来获得反函数?

在像Haskell这样的纯函数语言中,是否有一种algorithm来获得函数的反函数,(编辑)它是否是双射的? 有没有一个特定的方式来编程你的function,所以呢?

真实世界Haskell的哪些部分现在已经过时或被认为是不好的做法?

在真实世界Haskell的第19章中,很多例子现在都因为Control.Exception的改变而失败了。 这让我想,也许这本书中的一些东西实际上已经过时了,不值得再学习了,毕竟已经6年了。 我唯一的另一个参考是学习你一个Haskell为好 ,虽然这是一本很好的书,它是比RWH更基础。 任何读过这本书之前,请给出一些build议,哪些部分不再相关? 特别是本书后半部分的章节,如软件事务内存,并发编程,套接字编程等。 编辑:这是关于2008年12月出版的这本书的版本,这是今天唯一已知的版本(2017年11月)

用于分析Haskell程序性能的工具

在解决一些项目欧拉问题来学习Haskell(所以目前我是一个完全初学者),我来到问题13 。 我写了这个(天真的)解决scheme: –Get Number of Divisors of n numDivs :: Integer -> Integer numDivs n = toInteger $ length [ x | x<-[2.. ((n `quot` 2)+1)], n `rem` x == 0] + 2 –Generate a List of Triangular Values triaList :: [Integer] triaList = [foldr (+) 0 [1..n] | n <- [1..]] –The same […]