Questions tagged «haskell»

Haskell是一种功能性编程语言,具有强大的静态类型,惰性评估,广泛的并行性和并发支持以及独特的抽象功能。

3
为什么Haskell(有时)被称为“最佳命令式语言”?
(我希望这个问题是话题性的-我尝试搜索答案,但没有找到明确的答案。如果这个话题不正确或已经回答了,请进行审核/删除。) 我记得几次听到/读过关于Haskell是最好的命令式语言的开玩笑的评论,这听起来当然很奇怪,因为Haskell通常以其功能而闻名。 所以我的问题是,Haskell的哪些特性/特征(如果有的话)有理由证明Haskell被认为是最好的命令性语言,或者实际上是在开玩笑吗?

4
Haskell在JVM上?
我想知道是否有某种方法可以使Haskell在JVM上运行(编译或解释)? Sourceforge上存在JHaskell,但是这个似乎空无一人。 GHC使用LLVM作为编译器后端。将LLVM编译为Java字节码是一个好主意还是可能?还是使用其他编译器后端?

4
如何卸载Cabal软件包的版本?
Happstack Lite正在破坏我,因为它的版本为blaze-html 0.5,并且需要0.4。Cabal表示同时安装了0.4.3.4和0.5.0.0版本。我想删除0.5.0.0并仅使用旧版本。但是cabal没有“卸载”命令,当我尝试时ghc-pkg unregister --force blaze-html,ghc-pkg说我的命令已被忽略。 我该怎么办? 更新:不要相信。尽管ghc-pkg声称忽略了该命令,但并未忽略该命令。使用Don Stewart接受的答案,您可以删除希望删除的版本。
82 haskell  ghc  cabal 

5
一个具体的例子表明单子在组合下没有关闭(有证据)?
众所周知,应用函子根据组成是封闭的,但单子函数不是。但是,我一直在寻找一个具体的反例来说明单子并不总是构成的麻烦。 这个答案给出[String -> a]了一个非单子的例子。在玩了一段时间之后,我凭直觉相信了它,但是这个答案只是说“无法实现连接”而没有给出任何理由。我想要更正式的东西。当然有很多类型的函数[String -> [String -> a]] -> [String -> a]; 必须证明任何此类功能不一定满足单子法则。 任何示例(附带证明)都可以;我不一定要特别寻找上述示例的证明。

3
使用GHCi时如何为函数提供显式类型声明?
我如何在GHCi中定义此函数的等效项(取自learningyouahaskell)? import Data.List numUniques :: (Eq a) => [a] -> Int numUniques = length . nub 如果没有类型声明,GHCi会接受函数定义,但最终会导致无用的类型: Prelude Data.List> import Data.List Prelude Data.List> let numUniques' = length . nub Prelude Data.List> :t numUniques' numUniques' :: [()] -> Int 结果函数仅接受单位列表作为参数。 有没有办法在GHCi中提供类型声明?还是有另一种方法来定义这些不需要类型声明的函数? 我在GHCi指南中没有看到明显的线索,并尝试了如下所示的表达式(无济于事): > let numUniques' = ((length . nub) :: (Eq …


6
在(函数式)编程的上下文中,“确定”和“确定”是什么意思?
我在关于haskell和函数式编程的博客中读了很多(特别是在sigfpe的博客中),但是我对它的含义一无所知。我大多数时候都不了解它,但是如果我知道的话,我可能会更好地理解这些文本。Google帮不了我。我迷失在技术方面。 同样,世界的非技术含义(“使抽象具体化”)也无法帮助我理解在代码中统一某些东西的实际含义。 我对计算机科学的概念有点慢,所以带有代码的实际示例将是不错的选择。:P

3
一般拉链拉链
对于任何容器类型,我们都可以形成(以元素为中心)拉链,并知道此结构是Comonad。最近在另一个Stack Overflow问题中针对以下类型对此进行了详细探讨: data Bin a = Branch (Bin a) a (Bin a) | Leaf a deriving Functor 使用以下拉链 data Dir = L | R data Step a = Step a Dir (Bin a) deriving Functor data Zip a = Zip [Step a] (Bin a) deriving Functor instance Comonad Zip where …

5
Haskell Web开发的生态系统是什么?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 受这个问题和最近的事情启发,我想知道Haskell Web开发涉及什么。 是否有Haskell Web框架或模板引擎? 托管Haskell网站将如何工作,是否有合适的Web服务器? 对于通常用于Web开发的常规快速开发和基于原型的工作流程,Haskell是否过于复杂? 是否有现有Haskell Web应用程序的示例?
80 haskell 

1
什么是Levity多态性
正如问题的标题所示,我想知道什么是Levity多态性,其动机是什么?我知道此页面中包含一些详细信息,但其中的大多数解释都超出了我的头脑。:) 尽管此页面友好一些,但我仍然无法理解其背后的动机。
80 haskell 

2
Haskell“不执行任何操作” IO,或者如果不执行其他操作
我想在Haskell中执行以下操作: main1 = do s <- getLine if s == "foo" then putStr "You entered foo" 显然这是不合法的,因为那里没有else。我想到的另一种选择: nop :: IO () nop = sequence_ [] main2 = do s <- getLine if s == "foo" then putStr "You entered foo" else nop 这有点冗长,但是如有必要,我会解决的。如果没有的内置版本,我会感到惊讶nop。 或者: doIf :: Bool -> IO () …
80 haskell  syntax  io 

2
功能镜片
有人可以向我解释功能性镜片吗?对于Google来说,这是一个令人惊讶的困难,而且我没有取得任何进展。我所知道的是,它们提供与OO中类似的获取/设置功能。

4
Haskell中的异常处理
我需要帮助以了解三个Haskell函数的用法 试试(Control.Exception.try :: Exception e => IO a -> IO (Either e a)) 赶上(Control.Exception.catch :: Exception e => IO a -> (e -> IO a) -> IO a) 处理(Control.Exception.handle :: Exception e => (e -> IO a) -> IO a -> IO a) 我需要知道几件事: 什么时候使用哪个功能? 如何通过一些简单的示例使用此功能? 捕获和处理之间的区别在哪里?它们具有几乎相同的签名,只是顺序不同。 我将尝试写下我的尝试,并希望您能为我提供帮助: 尝试 我有一个像这样的例子: …

2
将Int除以Int并返回Int
我需要一个获取两个Ints(a和b)并返回A/B为Int。我确定那A/B将永远是整数。 这是我的解决方案: myDiv :: Int -> Int -> Int myDiv a b = let x = fromIntegral a y = fromIntegral b in truncate (x / y) 但是想找到更简单的解决方案。像这样: myDiv :: Int -> Int -> Int myDiv a b = a / b 如何将Int除以Int并获取Int?
79 haskell  int 

9
使用foldr编写foldl
在真实世界的Haskell中,关于函数式编程的第4章: 用foldr编写foldl: -- file: ch04/Fold.hs myFoldl :: (a -> b -> a) -> a -> [b] -> a myFoldl f z xs = foldr step id xs z where step x g a = g (f a x) 上面的代码使我很困惑,有人叫dps用有意义的名字重写了它,使它更清晰: myFoldl stepL zeroL xs = (foldr stepR id xs) zeroL where …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.