函数式编程是一种基于使用函数构建抽象,避免副作用和状态变化的编程范例。纯函数编程是线程安全的。
List monad 和 bind with list.concat 和 list map?
给定这个列表 monad: 模块 ListMonad = 结构 输入 'a t = 'a 列表 让返回 x = [x] 让绑定 m f = List.concat (List.map f m) 让 (>>=) = 绑定 让零 = [] (* 中性元素 ...
我目前正在编写一个用于导入和导出数据的“转换器”。 具体数据为车辆。 所以基本上我是从供应商那里得到一辆车让我们这样说 { “id&q...
我正在尝试解析(使用 parsec)表示我定义的某种数据类型的字符串。因此需要将字符串解析为我的数据类型。字符串的一个例子是, [(1,[(<,0),(%,4...
Haskell 修改了 hamming 以便输入是列表而不是 1
所以这将是 Haskell 的标准汉明代码,我设法理解并编写了它。 merge :: Ord a =>[a] -> [a] -> [a] 合并[] ys = ys 合并 xs [] = xs 合并(x:xs)(y:ys)...
我得到了这个模块类型,我被要求创建一个空的 tree_zipper,但我认为树拉链的以下实现是不可能的: 模块类型 TREE_ZIPPER = 签名 输入'a
Kotlin 学习:有没有更实用的方法从 FEN String 初始化这个 2D 数组(棋盘)?
希望在这里通过询问是否有更实用的方法来实现我下面的工作代码来扩展我的 Kotlin 技能。 简要描述发生了什么: FENString 是
是否可以在 Python 中进行一些匿名递归? 我的意思是,制作一个递归的 lambda 函数,它不调用它的名字(因此,即使您不分配 lambda,它也必须工作)。 还有,我知道
让下面的树拉链: type 'a ntree = 'a * 'a ntree 列表的节点 输入'上下文= |顶部 | 'a ntree list * 'a * 'a context * 'a ntree list 的上下文 输入'a tree_zipper = TZ ...
给定一个拉链: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) 给出的删除操作是: 让 remove_exn (l, n) = 让 rec rem ll nn = 将 (nn, ll) 与...匹配
Zipper 数据结构移除操作,全部移除索引 i 后面还是只移除一个榆树?
给定一个拉链: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) 给出的删除操作是: 让 remove_exn (l,n) = 让 rec rem ll nn = 匹配 (nn,ll) 与 | (...
将函数从使用两个 `let` 和 `in` 转换为只使用一个 `let`
我发现这种类型的拉链和插入函数定义如下: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) let insert ((l, n): '一个拉链) (a: 'a) : '一个拉链 = 让...
我发现这种类型的拉链和插入函数定义如下: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) let insert ((l, n): '一个拉链) (a: 'a) : '一个拉链 = 乐...
zipper:返回从焦点位置开始的子列表 |但为什么当 n > 0 时?
我找到了这种类型的拉链并得到了这样定义的函数: 输入 'a zipper = 'a list * int 异常为空 让空 = ([], 0) (* get: 返回从焦点位置开始的子列表 *) 让 rec g...
给定一个函数 m(a, b) = 1 如果 n = 0 并且 m(a, b) = m(a-q, m(a,b)) 否则。 我想用 thunk 来控制这个函数的求值,而这就是我所做的。我对这个解决方案的意图......
我有这个: type 'a queue = {f : 'a stream;长度:整数; r : '一个流; lenr : int};; 让空:'一个队列= {f = Nil;长度 = 0; r = 零; lenr = 0};; 让 is_empty (q :'a queue) = 将 q 与 ...
我有这个 Ocaml 问题: 鉴于 输入 'a stream = Nil | 'a * (unit -> 'a stream) 的缺点;; 编写函数 take : 'a stream -> int -> 'a list 它创建一个列表 n 元素...
如何将地图转换为新地图并处理 scala 中可能重复的新密钥
我想将地图转换为新地图,新地图的新密钥将由旧密钥生成,但新密钥可能会重复,因此我需要为同一个新密钥聚合结果。 对于
在 PLAIT、racket 的另一个函数中嵌套“定义”函数
是否可以在 plait 的另一个函数中定义函数? 当我在 Racket 中这样做时它运行良好但在辫子中我不断出错。这是一个例子: (定义(事实 n) (定义(事实...
我有一个队友在 foreach 执行中完成了他所有的流操作。我试图想出使用过滤器、映射和列表方法的优势。 它还有哪些优点
给定一个函数 m(a, b) = 1 如果 n = 0 并且 m(a, b) = m(a-q, m(a,b)) 否则。 我想用 thunk 来控制这个函数的求值,而这就是我所做的。我对这个解决方案的意图......