haskell相关内容
我一直在使用 Data.Binary 将数据序列化为文件.在我的应用程序中,我逐渐将项目添加到这些文件中.两个最流行的序列化包,二进制和谷物,都将列表序列化为一个计数,然后是列表项.因此,我无法附加到我的序列化文件中.我目前读入整个文件,反序列化列表,附加到列表,重新序列化列表,然后将其写回文件.但是,我的数据集越来越大,而且我的内存开始耗尽.我可能会四处拆箱我的数据结构以获得一些空间,但这种方法
..
随机示例:给定以下 [Maybe [a]], x = [Just [1..3], Nothing, Just [9]] 我想通过3层映射f = (^2),从而得到 [只是 [1,4,9],Nothing,Just [81]] 最简单的方法似乎是 (fmap .fmap .fmap) (^2) x where fmap .地图.fmap 类似于 fmap,但它有 3 层深. 我怀疑
..
我想弄清楚如何在 Haskell 中计算一般树的深度.我可以找出简单二叉树的解决方案,但不能为具有任意数量叶子的一般树找出解决方案. 这是我的二叉树代码. --二叉树的深度.深度 :: 树 a ->整数深度零 = 0深度(节点 n x1 x2)= 1 + max(深度 x1)(深度 x2) 我如何为一般的树修改这个?一般树包含一个树列表,这就是我遇到困难的地方. 其次,我想把树变成
..
我是 Haskell 的新手,我很难理解我的代码有什么问题. 这是我应该做的: 考虑以下二叉树的定义 data BinaryTree a = Empty |节点 a (BinaryTree a) (BinaryTree a) 考虑函数reflect,通过一直向下交换左右来形成二叉树的镜像 reflect :: BinaryTree a ->二叉树反映空 = 空反射(节点 x l r)
..
type BSTree a = BinaryTree adata BinaryTree a = Null |节点 (BinaryTree a) a (BinaryTree a)导出显示flattenTree :: 二叉树 a ->[一个]flattenTree 树 = 案例树空 ->[]节点左 val 右 ->(flattenTree 左) ++ [val] ++ (flattenTree 右)
..
我需要让函数从树中返回所有可能的分支使用这种形式: 数据树 a = EmptyT |NodeT a ( Tree a ) ( Tree a ) 派生 (Show)everyBranch :: 树 a ->[[一个]] 我不知道如何处理这个... xD我还是 Haskell 的新手. 假设我有: 1/\2 3/\/\4 5 7 8 我想得到:[[1,2,4], [1,2,5], [1
..
我有一个树的数据结构: 数据树 a = NodeT a (树 a) ( 树 a) |空T 我需要创建一个函数,该函数返回一个列表列表,其中列表的每个元素代表树的一个级别.例如,从这里: 1/\2 3/\/\4 5 6 7 到这个:[[1],[2,3],[4,5,6,7]] 该函数必须具有以下形式: f :: 树 a ->[[一个]] 如何使用递归来实现? 有人吗
..
我正在阅读 克里斯的这篇论文冈崎;标题为“广度优先编号:算法设计小练习的经验教训". 一个问题是 - 算法中的魔法是如何发生的?有一些数字(例如,标题为“将一个级别的输出线程化到下一个级别的输入"的图 7)不幸的是,也许只有我,但那个数字已经完全让我感到困惑.我根本不明白线程是如何发生的? 解决方案 广度优先遍历意味着逐层遍历树.所以让我们假设我们已经知道每个级别开始时的数字是多少
..
Data.Tree 包括 unfoldTreeM_BF 和 unfoldForestM_BF 函数,用于使用 monadic 操作的结果构建广度优先的树.使用森林展开器可以轻松编写树展开器,因此我将重点介绍后者: unfoldForestM_BF :: Monad m =>(b -> m (a, [b])) ->[b] ->m [树 a] 从种子列表开始,它对每个种子应用一个函数,生成动作,产
..
我用以下方法构建了二叉树: 数据树 a = 空|节点a(树a)(树a)推导(Eq、Ord、Read、Show) 如何为这棵树创建 Monad 类型的类实例?我可以不做吗? 我尝试: instance Monad Tree where返回 x = 节点 x 空 空空 >>= f = 空(Node x Empty Empty) >>= f = f x 但我不能为节点 x 左右创建 (>>
..
首先,我有两种不同的实现,我认为它们是正确的,并且对它们进行了分析并认为它们具有相同的性能: depth::Tree a ->整数深度 空 = 0深度(分支 b l r)= 1 + 最大(深度 l)(深度 r)depthTailRec::Tree a ->整数depthTailRec = depthTR 0 其中depthTR d 空 = ddepthTR d (Branch b l r) =
..
我想获取与我的处理程序相对应的当前路线.这是我的服务器模型仅供参考: type ServerAPI =“route01":>获取 '[HTML] 文本:“route02":>“子路由":>获取 '[HTML] 文本:“route03":>获取 '[HTML] 文本 这里有一些处理程序: route1and2Handler :: 处理程序文本route1and2Handler =
..
根据这篇文章,终于有一个用于 GHC 版本的 debian 包支持模板 haskell 和 ghci. 这是真的,我从一个新的 Raspbian 副本开始,我将我的 /etc/apt/sources.list 文件更改为: deb http://http.debian.net/debian sid main contrib non-free# 取消注释下面的行然后'apt-get upda
..
我已经成功创建了一个 ghc 交叉编译器,它允许我从我的 x64 linux 机器为 armv6h(在我的例子中是树莓派)编译 haskell 代码.我已经在树莓派上成功运行了 hello world 程序. 不,我想构建我的真实应用程序,它对其他 haskell 模块有很多依赖.当我为 x64 编译时,我只是这样做 cabal installdependenciy1 depenency2
..
在 Haskell 中,有一个函数“take n list",它返回列表中的前 n 个元素.例如,“sum (take 3 xs)"对列表 xs 中的前三个元素求和.F# 有等价物吗?我希望它是 List 函数之一,但我找不到任何似乎匹配的东西. 解决方案 是的,它叫做 Seq.take.用法似乎与 Haskell 的相同:Seq.take count source.要在列表中使用它,请使
..
当我偶然发现一种称为 Euler 筛的 Eratosthenes 筛的改进版本时,我正在阅读不同的筛分算法.根据 维基百科,有一个在 Haskell 中实现了略有不同的想法版本(称为特纳筛). 现在我试图了解给出的代码片段到底做了什么,我想我已经明白了,但现在我想将代码翻译成 F# 并且真的不知道从哪里开始.我主要担心的是似乎没有一个函数可以“减去"两个序列. 代码如下: impor
..
函数式语言是否适合 Web 应用程序开发? 函数式语言是否适合业务/ERP/CRM 类型的应用程序? 解决方案 您描述的那种函数式语言是通用编程语言,它们用于各种事物,包括 Web 应用程序和业务应用程序.(我使用 Haskell). Haskell 是否适合 Web 应用程序? 在 Haskell 中构建商业网络应用 正如 gabor 所暗示的,最终归结为图书馆.Scal
..
大约 6 年前,我在 OCaml 中对自己的解析器组合器进行了基准测试,发现它们比当时提供的解析器生成器慢约 5 倍.我最近重新审视了这个主题,并对 Haskell 的 Parsec 与一个简单的手动优先级爬升解析器进行了基准测试 用 F# 编写,并惊讶地发现 F# 比 Haskell 快 25 倍. 这是我用来从文件中读取大型数学表达式、解析和评估它的 Haskell 代码: impor
..
我想知道我是否应该继续学习 OCaml 或切换到 F# 或 Haskell. 以下是我最感兴趣的标准: 长寿 哪种语言会持续更长时间?我不想学习可能在几年内被用户和开发人员放弃的东西. 从长远来看,Inria、微软和格拉斯哥大学是否会继续支持各自的编译器? 实用性 类似this 让我害怕使用 Haskell.哈希表是快速检索的最佳结构.那里的 Haskell 支持者
..
我在互联网上搜索了 F# 和 这些东西是什么意思?纯函数式语言,意味着没有副作用(或调用函数时共享状态的变化),这意味着您可以保证,如果调用 f(x),除了从函数返回值外,不会发生任何其他事情,例如控制台输出、数据库输出、对全局或静态变量的更改……尽管 Haskell 可以具有非纯函数(通过 monad),但它必须通过声明“显式"隐含. 纯函数式语言和“无副作用"编程最近很受欢迎,因为它非
..