functional-programming相关内容

如果 F# 支持 void 类型,为什么我需要在 F# 中使用单元类型?

我阅读了这篇 MSDN 文章: 单位类型 (F#) ...单位类型是一种类型,表示没有特定的价值;单位类型只有一个值,作为不存在或不需要其他值时的占位符...单元类型类似于 C# 和 C++ 等语言中的 void 类型... 所以...好吧,我明白了,单元类型就是这样一种类型,它只有一个值().但我有一些问题: 为什么需要它? 什么时候需要? 我不明白为什么不在 F ..
发布时间:2022-01-05 10:01:25 其他开发

F#中的列表理解

我正在尝试在 F# 中进行一些列表理解.我发现了这个. 让偶数 n ={ for x in 1 .. n 当 x % 2 = 0 ->X }print_any (evens 10)让 squarePoints n ={ 对于 x in 1 .. n对于 y in 1 .. n ->x,y }print_any (squarePoints 3) 第一个仍然可以正常工作,但第二个已经过时了.最新的 ..
发布时间:2022-01-05 09:56:37 其他开发

在 F# 中编写 batchesOf size seq 的最惯用方法

我正在尝试通过将一些 C# 算法重写为惯用的 F# 来学习 F#. 我尝试重写的第一个函数是一个 batchesOf,其中: [1..17] |>批次 5 这会将序列分成多个批次,每个批次最多五个,即: [[1;2;3;4;5];[6;7;8;9;10];[11;12;13;14;15];[16;17]]] 我第一次尝试这样做有点难看,在尝试在闭包中使用 mutable 类型时遇到错 ..
发布时间:2022-01-05 09:55:33 其他开发

克尼汉 &函数式语言中的 Ritchie 字数统计示例程序

我最近在网上阅读了一些关于函数式编程的文章,我想我对它背后的概念有了基本的了解. 我很好奇涉及某种状态的日常编程问题是如何用纯函数式编程语言解决的. 例如:《C 编程语言》一书中的字数统计程序如何用纯函数式语言实现? 欢迎任何贡献,只要解决方案是纯函数式的. 这是书中的字数统计 C 代码: #include #define IN 1/* 在一个单词内 */#define ..

Clojure 中的运算符重载

即使仔细查看关于 Clojure 的文档,我也没有看到任何关于 Clojure 是否支持运算符重载的直接确认. 如果是这样,有人可以向我提供有关如何重载的快速片段,例如“+"运算符以委托给我们可以调用 myPlus 的某些预定义方法. 我对 Clojure 非常,因此非常感谢有人在这里提供帮助. 解决方案 Clojure 的(和任何 Lisp 的一样)操作符是普通函数;您可以像 ..

什么是 Clojure 规范?

我无法理解clojure的意图.规范 它解决了什么样的问题? 我们为什么要使用它? 解决方案 spec 允许您为数据和函数创建规范.规范的核心是谓词(基于现有的 Clojure 谓词)和结构,而不是您在静态类型语言中可能看到的基于类型.通过基于谓词的规范,您可以编写比大多数类型系统更具表现力的规范,并且使用与您的代码相同的语言. 在函数上定义的规格指定参数的规格、返回值以 ..

为什么在 Clojure 中使用 Maybe/Option 不那么普遍?

为什么 Clojure 尽管如此强调功能范式,但不使用 Maybe/Option monad 来表示可选值?Option 的使用在 Scala 中非常普遍,Scala 是一种我经常使用的函数式编程语言. 解决方案 Clojure 不是静态类型的,因此不需要 Haskell 中必需的严格的 this/that/whatever 类型声明(而且,我收集的是 Scala).如果你想返回一个字符串 ..
发布时间:2022-01-02 22:58:19 其他开发

学习函数式/Clojure 编程 - 实践练习?

我正在使用 Clojure 学习函数式编程.您可以推荐哪些实践练习?带有解决方案的在线存储库将是完美的. 我能想到的一个想法是遍历所有流行的排序、树、图等算法,并自己在 Clojure 中实现它们.虽然它可以工作,但它可能非常陡峭,而且我很可能效率低下(与知道自己在做什么的人相比). 解决方案 我建议做 Project Euler 练习: http://projecteuler ..
发布时间:2022-01-02 22:55:33 其他开发

Clojure- 在函数内部定义变量?

我有这个变量,hand,当我自己定义它时效果很好. (定义你的手(地图;;fn#(让 [x %](条件;;心( 我想在此函数中使用此变量.当我先定义变量然后在函数中使用它的名称时,这很好用. (reduce + (vec (map #(let [x %](条件(= x 1) 1: 否则 0))你的手))) 当我尝试在函数中定义变量时,问题就出现了,就像这样. (reduce + (vec ..
发布时间:2022-01-02 22:54:05 其他开发

Clojure 中的 Do-while 循环?

所以我想先执行一堆代码,然后然后询问用户他是否想再次这样做.我认为最方便的方法是在 C++ 中使用 do-while 循环,而且由于我在 Clojure 中似乎找不到任何 do-while 函数,所以我写了以下内容: (defmacro do-while“在测试真值表达之前执行主体"[测试&身体]`(do (do ~@body) (while ~test ~@body))) 是否有更好的方式( ..
发布时间:2022-01-02 22:52:52 其他开发

如何根据reduce定义map、filter和reverse等操作?

在此博客条目中,“JavaScript 中的 CSP 和转换器",作者声明: 首先,我们必须意识到许多数组(或其他集合)操作,如map、filter 和reverse 可以用术语定义reduce. 我的问题是:如何根据reduce定义map、filter和reverse等操作?您能否提供Clojure中的示例? 解决方案 这是真的,如果我们不关心懒惰的话.在 Clojure 中 ..
发布时间:2022-01-02 22:52:01 其他开发

MATLAB 中的偏函数求值

是否有一种惯用的方法来绑定 MATLAB 函数中的变量?创建一个函数,绑定几个参数,然后将新函数传递给某种优化器(在我的例子中是牛顿求解器)似乎是相当普遍的.看起来变量作用域规则不允许使用嵌套或内联函数的解决方案.我应该简单地创建一个类吗?MATLAB 似乎没有一流的函数对象,这是正确的吗?我的搜索功夫快不行了.谢谢! 举个例子,假设我想为参数 c 的各种值找到 f(c,x)=x^3+cx^ ..
发布时间:2022-01-02 14:06:47 其他开发

根据独立谓词流式传输一个集合并收集到多个结果中

我正在盯着一些命令式代码,我试图将其转换为纯函数式风格.基本上有一个对 inputSet 的迭代循环,其中我检查 3 个谓词并根据哪个谓词匹配来填充 3 个 outputSets.输出集可以重叠.如何使用 Java 8 流/映射/过滤器/等以纯函数方式执行此操作? 解决方案 最简单的解决方案(除了让一切保持原样更容易)是创建三个独立的流: Setset1 = inputSet.strea ..
发布时间:2022-01-02 14:06:31 Java开发

Scala 使用模式匹配获取列表的第一个和最后一个元素

我正在对列表进行模式匹配.无论如何我可以访问列表的第一个和最后一个元素进行比较? 我想做类似的事情.. case List(x, _*, y) if(x == y) =>真的 或 case x :: _* :: y => 或类似的东西...其中 x 和 y 是列表的第一个和最后一个元素.. 我该怎么做……有什么想法吗? 解决方案 使用标准 :+ 和 +: 来自 ..
发布时间:2022-01-02 14:06:13 其他开发

使用 scala 模式匹配而不是 java switch case 的优点是什么?

每个人都说模式匹配是函数式语言的一个很好的特性.为什么? 我不能简单地使用 ifs 和 switch case 来处理所有事情吗? 我想了解使用模式匹配代替常规过程编程 ifs 和 switch case 的优势 解决方案 我首先要指出的是,您不使用模式匹配“代替"switch 语句.Scala 没有 switch 语句,它有的是匹配块,里面的 case 表面上看起来非常类似于 ..
发布时间:2022-01-02 14:05:55 Java开发