functional-programming相关内容

计算python字典/数组数据结构的非空尾叶 - 递归算法?

我正在寻找一个函数来查找一种复杂字典/数组结构的所有非空端点.我认为因为我不知道嵌套数组的数量或它们的位置,所以它必须是递归的,而且我还没有完全理解这种想法. 所以对于嵌套的字典: x = {"top": {"middle" : [{“嵌套":“值"},{"嵌套":"val2"},{“嵌套":“"}],“最后的" : [{“嵌套":[{“第一":1,“第二":1},{“第一":0,“第二" ..
发布时间:2022-01-07 13:51:39 Python

通过引用更新树结构中的项并返回更新的树结构

我目前正在学习使用 HyperappJS (V2) 和 RamdaJS 的函数式编程.我的第一个项目是一个简单的博客应用程序,用户可以在其中评论帖子或其他评论.评论表示为树结构. 我的状态如下所示: //state.js导出默认{帖子: [{主题:`主题A`,评论: []},{主题:`主题B`,评论: [{文字:`评论`,评论: [/* ... */]}]},{主题:`主题C`,评论: [ ..
发布时间:2022-01-05 19:00:48 其他开发

为什么此 F# 函数需要括号?

为什么下面的 read_rest_of_csv 需要括号? 让 read_rest_of_csv() =csv_data.Add(csv_fileH.ReadFields()) |>忽略不是 csv_fileH.EndOfData而 read_rest_of_csv() 会忽略 None 没有括号,循环不会终止. 开放系统打开 System.Threading打开 System.Colle ..
发布时间:2022-01-05 10:27:41 其他开发

F# 和鸭子类型

假设我在 F# 中定义了以下两种类型: type Dog = { DogName:string;年龄:int }类型猫 = { 猫名:字符串;年龄:int } 我期待以下方法对猫和狗都有效: 让 isOld x = x.Age >= 65 实际上,似乎发生的是 isOld 只接受猫: let dog = { DogName = "Jackie";年龄 = 4 }让 cat = { Cat ..
发布时间:2022-01-05 10:26:12 C#/.NET

状态 Monad,为什么不是元组?

我刚刚了解了 monad(至少我想我有),更具体地说是 state monad,有些人比我更聪明,所以我可能是这样的带着这个问题. 无论如何,状态单子通常用 M 实现,就像这样(F#): type State 'a * 'state) 现在我的问题是:有什么理由不能在这里使用元组吗?除了 MonadA'res * 'state,它表示一个计算,它采用一些初始状态并产生结果(连同状 ..
发布时间:2022-01-05 10:23:56 C#/.NET

由于循环引用,确定如何对 F# 类型进行排序时出现问题

我有一些扩展通用类型的类型,这些是我的模型. 然后我为 CRUD 操作的每个模型类型设置了 DAO 类型. 我现在需要一个函数,它可以让我找到给定任何模型类型的 id,所以我为一些杂项函数创建了一个新类型. 问题是我不知道如何订购这些类型.目前我在 dao 之前有模型,但我在 CityDAO 之前需要 DAOMisc 和 DAOMisc 之前需要 CityDAO,这是'可能. ..

我什么时候应该以柯里化形式编写我的函数?

我最近开始学习 F# 并遇到了一些简单示例的柯里化函数,例如: 考虑一个函数,它通过将价格 p 乘以销售单位数 n 来计算销售额. let sales (p,n) = p * (float n);; 该函数的类型为 val sales : p:float * n:int ->漂浮 即取一对 float 和 int 并返回一个 float. 我们可以把它写成一个柯里化函数 le ..
发布时间:2022-01-05 10:18:03 其他开发

如果您已经了解 LISP,为什么还要学习 F#?

当您已经熟悉 LISP 时,学习 F# 的附加价值是什么? 解决方案 静态输入(带类型推断) 代数数据类型 模式匹配 可扩展模式与活动模式匹配. 柯里化(语法很好) Monadic 编程,称为“工作流",提供了一种很好的异步编程方式. 其中很多是编程语言世界中相对较新的发展.这是您在 F# 中会看到而在 Lisp 中不会看到的东西,尤其是 Common Lisp,因为 F# ..
发布时间:2022-01-05 10:17:45 其他开发

您将 f# 用于哪些代码区域?

对于那些在使用 f# 的人,您使用它编写哪些功能领域的代码?这种语言真正适合什么语言,它比 c# 更强大和更容易做什么? 解决方案 我目前正在使用 F# 开发我的下一个独立视频游戏.到目前为止,我发现我的正常 OO 方法与我在 c# 中的开发方式不同. 我注意到的一些好处是,我平均使用较小的函数,即每个函数的行数减少了.现在对我来说,将静态私有成员函数的范围限定在另一个成员内部,而不 ..
发布时间:2022-01-05 10:11:47 C#/.NET

函数式语言(Erlang、F#、Haskell、Scala)

函数式语言是否适合 Web 应用程序开发? 函数式语言是否适合业务/ERP/CRM 类型的应用程序? 解决方案 您描述的那种函数式语言是通用编程语言,它们用于各种事物,包括 Web 应用程序和业务应用程序.(我使用 Haskell). Haskell 是否适合 Web 应用程序? 在 Haskell 中构建商业网络应用 正如 gabor 所暗示的,最终归结为图书馆.Scal ..
发布时间:2022-01-05 10:11:41 其他开发

将选项类型列表压缩为非无元素的最佳方法?

我出乎意料地遇到了从 'a 选项列表到仅包含 Some 元素的列表的一些麻烦. 我最初的尝试是: let ga = List.filter (fun xx ->匹配 xx|一些(g) ->真的|无 ->假) gao 当然,这个结果类型仍然是'一个选项列表.我不知道如何使用 List.map 来压缩它,因为您必须在 match 语句中处理所有情况.我有一个丑陋的解决方案,但我想知道是否有 ..
发布时间:2022-01-05 10:11:15 其他开发

如何在函数式编程中实现对集合的内存高效的非破坏性操作?

我试图弄清楚如何在函数式编程中实现对大型集合的非破坏性操作,即.如何改变或删除单个元素而不必创建一个全新的集合,其中所有元素,即使是未修改的元素,都将在内存中复制.(即使原始集合会被垃圾收集,我预计这种集合的内存占用和一般性能也会很糟糕.) 这是我到现在为止的距离: 使用 F#,我想出了一个函数 insert 将列表分成两部分并在中间引入一个新元素,似乎没有克隆所有未更改的元素: / ..

F#在哪些领域“绝对没有使用意义"?

Don Syme 在他的 SPLASH 演讲中说 F# 并不打算替代 C#,即使它具有通用功能.他接着说,有些领域使用 F# 没有意义,但没有在论文中展开. 谁能告诉我在使用 F# 时应该避免哪些区域? 您还可以提及 C# 的亮点. 相关问题: 在哪些领域使用 F# 可能比 C# 更合适吗? 解决方案 我的看法是,更换像 C# 这样丰富和成熟的语言将非常昂贵.因此,例如 ..
发布时间:2022-01-05 10:11:00 C#/.NET

如果 Java 人去 Scala,C# 去 F#,那么 Ruby 人去哪里寻找函数式必杀技?

我知道很多 Java 人已经开始关注 Scala,因为它在 JVM 上运行,Microsoft 世界中的很多人都在关注 F#,但是 Ruby 作为自然的函数继承者有什么? 在纯粹的 FP 意义上,Ruby 并不缺乏任何东西,相反,它有太多的人可能会说.函数式语言迫使程序员不要过多地使用全局变量和其他习语(尽管函数式语言中可以使用全局变量) 解决方案 对于什么是“函数式编程",有两个非 ..
发布时间:2022-01-05 10:10:21 其他开发

你如何设计一个功能性程序?

从我编程生涯的第一天起,我就开始了面向对象的编程.但是,我对学习其他范式很感兴趣(我在这里多次说过的东西是一件好事,但我没有时间去做).我想我不仅准备好了,而且还有时间,所以我将开始使用 F# 进行函数式编程. 但是,我不确定如何构建更少的设计应用程序.我习惯于 OO 编程中每个文件一个类和类名词/函数动词的想法.您如何设计和构建功能性应用程序? 解决方案 阅读 SICP. 此 ..
发布时间:2022-01-05 10:09:52 其他开发

Haskell 和 F# 之间的主要区别是什么?

我在互联网上搜索了 F# 和 这些东西是什么意思?纯函数式语言,意味着没有副作用(或调用函数时共享状态的变化),这意味着您可以保证,如果调用 f(x),除了从函数返回值外,不会发生任何其他事情,例如控制台输出、数据库输出、对全局或静态变量的更改……尽管 Haskell 可以具有非纯函数(通过 monad),但它必须通过声明“显式"隐含. 纯函数式语言和“无副作用"编程最近很受欢迎,因为它非 ..

如何在现实世界中使用函数式编程?

函数式语言很好,因为它们通过消除状态来避免错误,还因为它们可以轻松地自动为您并行化,而您不必担心线程数. 作为一名 Win32 开发人员,我可以将 Haskell 用于我的应用程序的某些 dll 吗?如果我这样做了,我是否会自动获得真正的优势?如果是这样,是什么给了我这个优势,编译器? F# 是否会自动为您并行化您跨多个内核和 CPU 编写的函数?您会看到任务管理器中的线程数增加吗? ..
发布时间:2022-01-05 10:09:22 其他开发

与单位相比无效

我想了解这两个编程概念之间的区别.第一个表示没有数据类型,而后者表示类型存在但没有信息.此外,我认识到 Unit 来自函数式编程理论基础,但我仍然无法理解单元原语的可用性(例如,在 F# 程序中). 解决方案 单位类型只是让一切变得更有规律.在某种程度上,您可以将 F# 中的每个函数视为采用单个参数并返回单个结果.不需要任何参数的函数实际上以“unit"作为参数,不返回任何结果的函数返回“ ..
发布时间:2022-01-05 10:05:54 其他开发

什么是“让"?F# 和 OCaml 等函数式语言中的关键字?

在查看 F#、Ocaml 和其他函数式语言代码示例时,我注意到 let 关键字的使用频率很高. 为什么需要它?为什么设计语言有它? 你为什么不能把它去掉?例如:让 x=4 变成 x=4 解决方案 在 F#(和 OCaml)中 let 是非常强大的结构,用于值绑定,它意味着赋予符号某种意义.这可能意味着各种事情: 声明本地或全局值 - 您可以使用它来声明本地值.这类似于在命令式 ..
发布时间:2022-01-05 10:04:51 其他开发