functional-programming相关内容

PartialFunction 设计效率低下吗?

这是我一直想知道的事情.我经常看到这种模式: if (pf.isDefinedAt(in)) pf(in) 通过将其分解为两个单独的调用,所有在#isDefinedAt 中求值的模式也将在#apply 中求值.例如: object Ex1 {def unapply(in: Int) : Option[String] = {out.println("Ex1")if (in == 1) Some ..
发布时间:2022-01-02 14:05:39 其他开发

uncurry ($) 有什么作用?

我正在做一些练习,我必须添加函数的类型并解释它的作用.我坚持这个: phy = uncurry ($) 类型,根据 GHCi 是 phy :: (a -> b, a) ->b.我的 Haskell 知识很基础,所以我真的不知道它是做什么的. 解决方案 让我们系统地拼出类型部分.我们将从 uncurry 和 ($) 的类型开始: uncurry :: (a -> b -> c) ->( ..
发布时间:2022-01-02 14:05:30 其他开发

Erlang 是“单赋值"吗?与 Haskell 的“不可变值"不同?

在“Programming Erlang"一书中,据说该语言使用“单赋值"变量.在其他关于函数式编程语言的文章中,我总是读到“不可变值". “单一赋值"一词与“不可变值"的含义是否不同? 解决方案 在 erlang 中,变量可以是绑定的,也可以是未绑定的.您只能为未绑定的变量赋值.这就是单一赋值的来源,因为一旦变量被绑定,您就不能再为其分配新值.所以在 erlang 中,即使 0 和 ..
发布时间:2022-01-02 14:05:08 其他开发

F#柯里化函数

谁有一个像样的例子,最好是实用/有用的,他们可以发布演示这个概念吗? 解决方案 (编辑:一个小的 Ocaml FP Koan 开始) 咖喱公案(关于食物的公案,与食物无关) 一位学生来到雅克·加里格 (Jacques Garrigue) 说:“我不明白咖喱有什么好处."雅克回答说:“告诉我你最喜欢的一餐和你最喜欢的甜点".困惑的学生回答说他喜欢御好烧和kanten,但是虽然 ..
发布时间:2022-01-02 14:05:03 其他开发

柯里化的实际优势是什么?

我看到了很多关于柯里化技术是什么的文档和问题,但我发现很少有关于为什么在实践中使用它的信息.我的问题是,柯里化的优点是什么?也许你可以提供一个简单的例子,说明柯里化比传统的方法调用更可取. 我在太阳升起的时候用 C++ 工作,所以到目前为止,除了下班后修补语言之外,我几乎没有接触过柯里化. 解决方案 首先,将偏函数应用误认为柯里化是很常见的.例如,请参见 this(我确定有更好的资源 ..
发布时间:2022-01-02 14:04:51 其他开发

在 JavaScript ES6 中是否有一种函数式的方式来初始化一个数组?

我终于放弃了,写了一个 for 循环来初始化一个简单的对象数组,其中每个对象都有一个递增的计数器 (id) 作为对象的属性.换句话说,我只想: var sampleData = [{id: 1},{id: 2},...]; 我希望有一个紧凑的语法,我可以把它放在我的 return 语句中. let sampleData = [];对于 (var p = 0; p 解决方案 Array. ..
发布时间:2022-01-02 14:04:31 前端开发

case 表达式中“或"的 Haskell 语法

在 F# 中,我可以在模式匹配时使用 | 对案例进行分组.例如, let rec factorial n =匹配 n 与|0 |1 ->1//就像在这一行|_ ->n * 阶乘 (n - 1) 相同的 Haskell 语法是什么? 解决方案 对于不同的模式,无法共享同一个右手边.但是,您通常可以通过使用守卫而不是模式来解决这个问题,例如使用 elem. foo x |x `elem` ..
发布时间:2022-01-02 14:04:23 其他开发

计算重叠日期范围时出现问题

我在尝试使用正确的算法来计算一组日期范围时遇到问题. 基本上我有一个无序日期范围列表(包含开始和结束时间数组的列表),我想合并这个列表,使其不包含重叠时间. 基本上是为了合并两个日期范围: if start1 end1//把最高时间放在end1结束 1 = 结束 2万一万一 这将连接两个日期时间. 在遍历所有值时遇到了绊脚石,因此最终列表仅包含不重叠的值. 我的函数式和 ..

Erlang 中不正确列表的实际使用(可能所有函数式语言)

我一直在阅读Erlang 和 OTP in action,并偶然发现了一个关于不正确列表的问题. 不要试图使用列表单元格这样即使你认为你有聪明的想法 - 它容易出错并且混淆人类和程序分析工具.也就是说,有用于创建的一两个有效用途不正确的列表,但它们被认为是先进的编程技术和超出了本书的范围. 超出本书的范围?它必须非常适合 Stackoverflow! 所以我的问题当然是,一些有效的用 ..
发布时间:2022-01-02 14:04:06 其他开发

F# 中的宏支持

在阅读了 Practical Common Lisp 之后,我终于明白宏的重要意义所在,并且我一直在为 .NET 平台寻找一种支持宏的语言..NET 有一些 lisp 方言,但据我所知,所有方言要么非常测试版,要么已废弃.最近 Clojure 激发了我的兴趣,但它是针对 java 平台的,虽然可能可以使用 ikvm,但感觉并没有一些集成.尤其是当你想做 WPF 之类的东西时. 最近我听到了关 ..
发布时间:2022-01-02 14:03:57 C#/.NET

Clojure 元数据有哪些用途?

您如何在 Clojure 程序中使用元数据? 我在Clojure 编程中看到了一个示例: (defn 喊 [#^{:tag String} 消息] (.toUpperCase 消息));;Clojure 将消息转换为字符串,然后调用该方法. 有什么用途?这种编程形式对我来说是全新的. 解决方案 文档字符串作为元数据存储在 :doc 键下.这可能是第 1 种最明显的元数据用途. ..
发布时间:2022-01-02 14:03:48 其他开发

在函数式编程中,不完整的模式匹配是否被认为是一种不好的做法

在 Haskell 或 F# 等函数式语言中使用非穷举模式是否通常被认为是一种不好的做法,这意味着指定的情况未涵盖所有可能的输入情况? 特别是,我应该允许代码因 MatchFailureException 等而失败,还是应该始终涵盖所有情况并在必要时明确抛出错误? 示例: let head (x::xs) = x 或 让头部列表=匹配列表|x::xs ->X|_ ->失败“将头部 ..
发布时间:2022-01-02 14:03:40 其他开发

C# 中的协方差类型有哪些?(或者,协方差:举例)

协方差(大致)是在使用“简单"类型的复杂类型中镜像继承的能力. 例如.我们总是可以将 Cat 的实例视为 Animal 的实例.如果 ComplexType 是协变的,则 ComplexType 可以被视为 ComplexType. 我想知道:协方差的“类型"是什么,它们与 C# 有什么关系(是否支持?) 代码示例会很有帮助. 例如,一种类型是返回类型协变,Java支持,但C#不支 ..
发布时间:2022-01-02 14:03:32 Java开发

'return' 关键字有什么特别之处

当我似乎理解了 Haskell 中的 return 是什么时,我尝试使用不同的替代方案,似乎 return 不仅可以在 monad 链中的任何地方使用,而且可以完全排除 *Main>只是 9 >>= \y ->(只是 y)>>= \x ->返回 x才 9*主要>只是 9 >>= \y ->(返回 y) >>= \x ->(只是你)才 9*主要>只是 9 >>= \y ->(只是 y)>>= \x ..
发布时间:2022-01-02 14:03:23 其他开发

闭包和对象

函数式编程 .. 就像经典(马克吐温的类型).在阅读有关 SICP 的另一篇文章时,人们正在谈论关闭对那里产生的巨大影响,我想起了这一点,我很久以前读过的 闭包是穷人的对象对象是穷人的封闭 (不记得确切的来源,但它是程序员的罗塞塔石碑,或编程的禅宗,或者tau编程……谷歌已经变得如此拥挤以至于无法访问原始来源) 所以共同程序员......你有什么看法......闭包是你一直缺少的 ..
发布时间:2022-01-02 14:03:15 其他开发

如何在 Elm 0.17/0.18 中获取当前时间?

我已经问过这个问题了: 如何在 Elm 中获取当前时间? 并通过编写我自己的(现已弃用)start-app 变体来回答它: http://package.elm-lang.org/packages/z5h/time-app/1.0.1 当然,Elm 架构已经改变了,我以前的做事方式不再有效,因为没有信号或 Time.timestamp. 所以.... 假设我使用标准更新 ..
发布时间:2022-01-02 14:03:08 其他开发

F# 度量单位如何工作?

有没有人有机会深入了解 F# 度量单位 有效吗?它只是基于类型的诡计,还是隐藏在下面的 CLR 类型可以(潜在地)从其他 .net 语言中使用?它适用于任何数字单位,还是仅限于浮点值(这是所有示例都使用的)? 解决方案 根据 响应 在下一篇相关博客文章中,它们是 F# 编译器中的纯静态机制.所以没有单位数据的 CLR 表示. 目前不完全清楚它是否适用于非浮点类型,但从类型系统的角度来 ..
发布时间:2022-01-02 14:02:58 C#/.NET