首页 文章
  • 174 votes
     answers
     views

    GHC可以实现哪些优化可靠?

    GHC有很多可以执行的优化,但我不知道它们是什么,也不知道它们在多大程度上被执行的可能性 . 我的问题是:我可以期望每次或几乎可以应用哪些转换?如果我查看将要经常执行(评估)的一段代码,我的第一个想法是“嗯,也许我应该优化它”,在这种情况下,我的第二个想法是,“甚至不要考虑它, GHC得到了这个“? 我正在阅读论文Stream Fusion: From Lists to Streams to No...
  • 17 votes
     answers
     views

    用一种语言编写GUI,用另一种语言编写主应用

    假设我在Haskell或Erlang中编写了一个应用程序(或其他任何内容,无关紧要),我希望它能用更友好的语言(我的观点)与我的gui一起工作 . 让我们说Python . 如何粘这两个?您将如何在这两个应用程序之间进行通信?制作某种服务器或什么?这种解决方案很受欢迎吗?我见过像SMplayer这样的东西,它是mplayer的gui,它的效果非常好 . 您对这种设计有何看法?
  • 1 votes
     answers
     views

    比较haskell中的元组列表

    好吧,我对Haskell非常陌生,就像我今天早上开始学习一样,并且已经承担了2个元组列表[(“s”,1)..]并且如果它们具有所有相同的元素则返回true,否则返回假 . 到目前为止,我正在考虑从列表1中获取第一个元素并将其与列表2中的所有元素进行比较,并对所有元素执行此操作,然后返回true或false . 我不知道如何跟踪所有的布尔值,如果有假的话很容易 |head list1 =/ elem...
  • 1 votes
     answers
     views

    在Rust中使用supertrait的有界特征参数

    我是Haskell和Rust的新手,我正在尝试将Haskell代码转换为Rust,以便比较支持通用性的功能 . 但是,似乎我需要帮助语法或Rust中的一些基本概念 . 我在Haskell中有这个代码: class HasEmpty a where empty :: a isEmpty :: a -> Bool class Hashable a where hash ...
  • 16 votes
     answers
     views

    没有monad变换器的monad的明确示例是什么? [重复]

    这个问题在这里已有答案: Is there a monad that doesn't have a corresponding monad transformer (except IO)? 3个答案 Monad变换器以所有标准monad(Reader,Writer,State,Cont,List等)而闻名,但这些monad变换器中的每一个都以稍微不同的方式工作 . 在给定具有monad实例的类...
  • 1 votes
     answers
     views

    使用函数动态创建列表

    我的目标是通过将函数应用于最后一个元素来创建无限列表 . 例如,如果我从一个看起来像的列表开始 [1] 并应用函数f(x)=(x 2)* 10,我应该结束 [1, 30, 320, 3220, 32220...] 我将如何在Haskell中编写代码?
  • 4 votes
     answers
     views

    项目Euler#1使用Haskell

    import Data.Set euler :: Int euler = sum [ x | x <- nums ] where nums = Data.Set.toList (Data.Set.union (Data.Set.fromList [3,6..999]) (Data.Set....
  • 12 votes
     answers
     views

    C vs Haskell Collatz猜想速度比较[关闭]

    我的第一个真正的编程经验是Haskell . 为了满足我的临时需求,我需要一个易于学习,编码快速且易于维护的工具,我可以说它很好地完成了工作 . 然而,在某一点上,我的任务规模变得更大,我认为C可能更适合他们,而且确实如此 . 也许我在[任何]编程方面不够熟练,但我无法使Haskell像C一样快速高效,即使我听说适当的Haskell能够具有类似的性能 . 最近,我想我会再次尝试一些Haskell,...
  • 32 votes
     answers
     views

    为Haskell积极开发和记录良好的GUI工具

    我花了很多时间在早上和下午在Haskell中使用GUI框架,因为我需要一些可视化和交互功能,而且我不喜欢在Haskell中编写我的核心功能然后在前端写出来在另一个GUI中;我宁愿用一种语言来做这一切 . 更好的部分更好的部分用于编译和修补源代码,或谷歌搜索模糊的编译错误 . 我花了很多时间阅读SO问题,在haskell.org上有充足的时间,并且有充足的时间阅读文档 . 我遇到的是一大堆过时或记录...
  • 1 votes
     answers
     views

    Haskell在列表中列出

    我有一个功课问题,我必须定义一个函数,它以带有较小整数列表的列表形式输入,并对每个最内层列表中的数字求和,然后将得到的和相乘 . 我的代码如下,显然不起作用,任何帮助将不胜感激:) sumI :: [Int] -> Int sumI [] = 0 sumI (x:xs) = x + sumI xs mapQ :: [[Int]] -> Int mapQ [] = [] mapQ xs...
  • 1 votes
     answers
     views

    Haskell反向整数与递归

    我想用递归来反转Haskell中的Integer . 我有一个小问题 . 这是代码: reverseInt :: Integer -> Integer reverseInt n | n>0 = (mod n 10)*10 + reverseInt(div n 10) | otherwise = 0 例345 我用作输入345,我想输出543 在我的程序中它会做.... rev...
  • 0 votes
     answers
     views

    方形整数haskell的总和

    我有这个代码来计算m:n范围内的整数平方和 sumsquares :: Integral a=> Int -> Int -> Int -> Int sumsquares m n middle | m > n = error "First number cannot be bigger than second number" |m==n = m*...
  • 0 votes
     answers
     views

    Haskell问题(无法't match type ' IO整数' with ' Int')

    我有一个Haskell脚本的问题 . 我正在尝试通过我在网上找到的问题来学习Haskell . 我得到的输入是:Int - >测试用例数S1 - >每个测试用例S2的字符串1 - >每个测试用例的字符串2 每个S1和S2是一个以空格分隔的数字串 . 我将它们转换为具有函数 strToIntList 的Int列表 . 然后我想处理两个列表并根据结果返回一个整数值 . 我收到以...
  • 0 votes
     answers
     views

    Haskell类型[Integer-> Integer]

    y = [\a->a+3, \b->1 , \c->c*c] 我认识函数y的类型为[Integer-> Integer],意味着它返回函数列表,每个函数取整数然后返回一个整数 . 但是,我很难弄清楚函数的输入,有人可以举个例子吗?
  • 0 votes
     answers
     views

    处理复杂的输入(使用嵌套值)

    有以下任务: 第一行是案件数量 对于每种情况,都有一行包含要添加的数字 对于每种情况,还有一行数字 对于每种情况,我都要打印总和数字 例: Input: 2 5 1 2 3 4 5 2 -100 100 Output: 15 0 这是我的实施 import Control.Monad main = do linesCount <- readLn :: IO...
  • 3 votes
     answers
     views

    具有动态请求/响应类型的管道?

    这似乎是一个合理的想法,但我希望'm having type troubles. I'能够发送一个选项列表到 Server ,它将选择一个并返回所选元素 . 所以像这样: module Toy where import Pipes asker :: Monad m => () -> Client ([a], a -> String) a m () asker () = do ...
  • 4 votes
     answers
     views

    如何将外部导出函数的参数传递给Pipe?

    我有一个 foreign export stdcall tick :: Integer -> Float -> Float -> IO Int 在每次调用此函数时,我希望将其参数传递给haskell管道库中的一组管道 . 在调用之间,我不希望管道忘记最后10次调用的参数的最小值和最大值 . 我该怎么做?
  • 6 votes
     answers
     views

    如何使用管道状态?

    我有一个 Map Int String -> Proxy () a () Void IO b 类型的函数 . 现在它 await s,做任何有 Value 的东西,然后重新调用自己 . 我想将它更改为使用 State (Map Int String) 而不是将其作为参数传递,所以我可以使用 forever 并且不需要让每个分支都记得递归 . 我得到了我需要使用 StateT 将 State...
  • 4 votes
     answers
     views

    如何找到Pipe的结尾

    在下面的代码中我该怎么做 更改 stdoutCharConsumer ,以便在打印输入流中的所有数据后打印换行符 实施 mixin 和 mixin' 没有进入Pipes.Internal?可能吗?我需要像 生产环境 者的 next 函数 . 我使用Pipes 4.1.0 #!/usr/bin/env runhaskell {-# OPTIONS_GHC -Wall #-} impor...
  • 5 votes
     answers
     views

    如何用管道检测输入结束

    我正在尝试从一个管道中读取一组最多50个项目,并在一次IO操作中处理它们 . (这个用例就是我试图将数据插入到数据库中,我想在一个事务中执行整个批处理,因为它的效率要高得多) . 这是我到目前为止的简化版本: type ExampleType = Int doSomething :: [ExampleType] -> IO () doSomething = undefined inGr...
  • 8 votes
     answers
     views

    如何检测Haskell管道中的最后一个块?

    我有一个小的Haskell Pipe 打印出它运行了多少次: counterPipe :: Pipe String String IO r counterPipe = go 0 where go n = do await >>= yield let n' = succ n liftIO $ putStrLn $ "Chunk ...
  • 3 votes
     answers
     views

    Haskell管道 - 管道消耗它产生的东西(本身)

    我'm trying to write a webscraper using Pipes and I'已经到了以下抓链接的部分 . 我有一个 process 函数,可以下载网址,查找链接并生成链接 . process :: Pipe Item Item (StateT CState IO) () .... for (each links) yield .... 现在我想要一些如何递归...
  • 2 votes
     answers
     views

    如何使管道与Haskell的管道库并发?

    我有一些使用Pipes的Haskell代码: module Main(main) where import Pipes a :: Producer Int IO () a = each [1..10] b :: Pipe Int Int IO () b = do x <- await yield (x*2) b c :: Consumer Int IO () c = do ...
  • 9 votes
     answers
     views

    如何在Haskell中构建有状态模块?

    我正在寻找一个允许Haskell程序与Cassandra交互的通用模块 . 该模块需要保持自己的状态 . 例如,它将具有连接池和保存新记录时要调用的回调列表 . 我应该如何构造代码以使该模块能够保持其状态?以下是我一直在考虑的一些方法 . 我是在正确的轨道上吗? (我是Haskell的新手,仍然在学习功能上最佳的思考方式 . ) 选项1: 该模块在(StateT的IO)monad中运行,其中s是使...
  • 18 votes
     answers
     views

    帮助Haskell动态插件加载

    我是Haskell的初学者,我正试图在'plugins'包中使用动态加载 . 我有点迷茫 . 这是一个包含两个文件的最小程序 . Main.hs: module Main (main) where import System.Plugins main :: IO () main = do putStrLn "Loading" mv <- dynload &qu...
  • 4 votes
     answers
     views

    用管道的WriterP编写一个简单的累加器

    使用管道库,我想编写一个程序来从某个源读取数据并单独累积它(例如,使用 Sum ) . 最简单的方法是, import Control.Proxy as import Data.Monoid (Sum) main = do let source = enumFromToS (0::Int) 5 a <- runWriterT $ runProxy $ source...
  • 2 votes
     answers
     views

    管道简单函数的等效代码

    比方说,我有以下类型: type LinkID = Int data Link = Link { lid :: LinkID, llength :: Int } data Snap = Snap { slid :: LinkID, slength :: Int } 现在,我想编写一个基于管道的函数来执行此操作: getSnaps :: LinkID -> [Li...
  • 7 votes
     answers
     views

    如何分离具有副作用的组件?

    我正在尝试在Haskell中创建一个基于代理的系统 . 为此,我需要在逻辑上将代理和环境部分分开,例如使用不同的测试和真实环境运行 . 组件类型,代理和环境都会有很多有状态的东西,所以我选择使用monad变换器堆栈来构建每个组件 . 我将组件接口移动到类型类,该类由环境实现 . 实现此类型类的Monad可用于通过将它们插入代理变换器来完成整个变换器堆栈 . 我创建了一个工作概念证明,发布在下面 ....
  • 0 votes
     answers
     views

    Haskell StateT和ExceptT链

    我不是很好的哈斯克尔程序员 . 我的任务是在我的大学编写一个编译器,我选择了haskell,因为它是用于此目的的好工具 . 我使用monads StateT和ExcepT,所以我有类型: type Runner r s = StateT s (ExceptT LatteError IO) r type RT r s = IO (Either LatteError (r, s)) 我用它创建wal...
  • 17 votes
     answers
     views

    Haskell中的美元符号($)和id函数之间是否存在关系?

    有一天我正在阅读关于Monad Challenge的评论(我强烈推荐给Haskell的任何初学者,就像我一样),最后我在this thread读到 ($) = id . 我不知道如何吓唬人,但是许多编程语言的概念最好用小例子来说明,这些例子让人们说“哇” . 例如,令人惊讶的是,Prolog中的append()可以从连接结果“向后”运行,以产生可以连接以生成它的所有列表 . 或者Haskell...

热门问题