-
0 votesanswersviews
在Scala中以monadic方式测试HttpRequest
假设我要在Scala中测试HTTP响应,以确保我的Web应用程序根据需要返回它们 . 例如,一个响应需要具有“status code”= Ok,“content-type:application / json”和“content-length”标头以及有效的JSON主体,另一个需要具有“status code”= Bad请求和错误消息等 假设我已经定义了一些函数来测试状态, Headers 和正文... -
4 votesanswersviews
Scheme中的“up”或“down”结构是什么?
很早就在功能微分几何中,Sussman&Wisdom开始使用"up structure" ......但我对这可能是什么没有任何想法 . (print-expression ((compose P2-chi R2-chi-inverse) (up ’x0 ’y0))) 我无法在文本的任何地方找到这个结构的描述,我无法在Scheme的标准版本或语言文档中找到它........ -
641 votesanswersviews
对象的映射函数(而不是数组)
我有一个对象: myObject = { 'a': 1, 'b': 2, 'c': 3 } 我正在寻找一个本机方法,类似于 Array.prototype.map ,将使用如下: newObject = myObject.map(function (value, label) { return value * value; }); // newObject is now { 'a': ... -
0 votesanswersviews
TypeScript中的标记
我试图想出一种在TypeScript中美化monadic库的方法 . 虽然monad本身的实现令人愉快,但它的使用看起来像熟悉的回调地狱 . 我想知道是否有办法劫持async / await或yield / for..of现有的monadic语法糖,但我必须承认我在连接点时遇到一些麻烦 . 是否可以在既不是Promise也不是Iterable的东西上使用这些结构,并且与使用react组件组成的co... -
46 votesanswersviews
分区Java 8流
如何在Java 8 Stream上实现"partition"操作?通过分区,我的意思是,将流划分为给定大小的子流 . 不知何故,它将与Guava Iterators.partition()方法相同,只是它's desirable that the partitions are lazily-evaluated Streams rather than List' s . -
3 votesanswersviews
传递函数参数的协方差
我已经尝试在Scala中实现StateMachine,但是我遇到了类型系统的问题让我感到困惑 . 在下面的代码中,我需要让 guard 函数接受StateMachine的预期子类的参数 . 不幸的是,由于 FunctionN 参数的类型参数是逆变的,我不知道如何解决这个问题 . class Transition[S, +M <: StateMachine[S]](start: S, end ... -
184 votesanswersviews
字符串列表到一个字符串
让我们说你有一个: List<string> los = new List<string>(); 在这个疯狂的功能世界中,我们生活在这些日子里,其中一个最适合通过连接这些来创建一个字符串: String.Join(String.Empty, los.ToArray()); StringBuilder builder = new StringBuilder(); los.... -
33 votesanswersviews
Monad对申请人有什么好处?
我读过this article,但最后一节并不明白 . 作者说Monad给了我们上下文敏感性,但是只使用Applicative实例就可以实现相同的结果: let maybeAge = (\futureYear birthYear -> if futureYear < birthYear then yearDiff birthYear futureYear else ye... -
33 votesanswersviews
为什么捕获异常非纯,但抛出异常是纯粹的?
在Haskell中,您可以从纯函数代码中抛出异常,但是您只能捕获IO代码 . 为什么? 你可以在其他情况下或仅在IO monad中捕获吗? 其他纯功能语言如何处理它? -
20 votesanswersviews
Haskell递归和内存使用
我对用递归替换循环的想法感到满意 . 我正在摆弄一个宠物项目,我想测试一些文本输入功能,所以我写了一个小命令行界面,重复询问输入,直到它收到一个特定的退出命令 . 它看起来像这样: getCommandsFromUser = do putStrLn "Enter command: " keyboardInput <- getLine let com... -
1268 votesanswersviews
什么是monad?
最近简要地看了一下Haskell,对于monad本质上是什么,简单,简洁,实用的解释是什么? 我发现我遇到的大多数解释都是相当难以接近的,缺乏实际细节 . -
316 votesanswersviews
“编程代码”在编程环境中意味着什么?
我在函数式编程和PLT圈子里曾多次听到过“enggebras”这个术语,特别是在讨论对象,comonads,镜头等时 . 谷歌搜索这个术语给出了这些结构的数学描述的页面,这对我来说是非常难以理解的 . 任何人都可以解释一下代数在编程环境中的含义,它们的意义是什么,以及它们与对象和共同体的关系? -
383 votesanswersviews
功能GUI编程是否可行? [关闭]
我最近发现了FP bug(试图学习Haskell),到目前为止我已经看到了很多(一流的功能,懒惰的评估和所有其他好东西) . 我还不是专家,但我已经开始发现在功能上更容易推理基本算法的命令(而且我很难回到原地) . 然而,当前FP看起来平坦的一个领域是GUI编程 . Haskell方法似乎只是包装命令式GUI工具包(例如GTK或wxWidgets)并使用“do”块来模拟命令式样式 . 我没有使用... -
33 votesanswersviews
在Scala中使用zipWith(映射多个Seq)
假设我有 val foo : Seq[Double] = ... val bar : Seq[Double] = ... 我希望产生一个seq,其中baz(i)= foo(i)bar(i) . 我能想到的一种方法是 val baz : Seq[Double] = (foo.toList zip bar.toList) map ((f: Double, b : Double) => f+b)... -
10 votesanswersviews
如何“附加”到Swift中的不可变字典?
在Scala中, immutable.Map 上的+ (k -> v)运算符返回一个新的 immutable.Map ,其中包含原始内容以及新的键/值对 . 同样,在C#中,ImmutableDictionary.add(k, v)返回一个新的,更新的 ImmutableDictionary . 但是,在Swift中,Dictionary似乎只有变异的 updateValue(v, for... -
0 votesanswersviews
为什么这个函数在返回false时返回true?
所以,我有这个辅助函数,它检查列表和对列表之间是否存在自反关系 . (define helper (lambda (L S) (cond ((if (equal? L '()) #f ;; here, when L equals empty list, it should return #f, but somehow it returns #t even if L is '... -
137 votesanswersviews
C中的函数式编程有哪些工具?
我最近一直在思考如何在C(而不是C)中进行函数式编程 . 显然,C是一种过程语言,本身并不真正支持函数式编程 . 是否有任何编译器/语言扩展可以为语言添加一些函数式编程结构? GCC提供nested functions作为语言扩展;嵌套函数可以从父堆栈框架访问变量,但距离成熟的闭包还有很长的路要走 . 例如,我认为在C中真正有用的一件事是,在任何需要函数指针的地方,你都可以传递lambda表达式,... -
345 votesanswersviews
什么是'Closure'?
我问了一个关于Currying和关闭的问题 . 什么是关闭?它与currying有什么关系? -
1 votesanswersviews
r中的手动皮尔森相关
你将如何创建一个手动计算r中的皮尔逊相关性的函数 . 我知道有一个名为 cor 的本机函数,但如果我想将R中的下面的等式应用于数据框中的每个列组合,我该怎么做呢? 我希望我知道如何,但我相信它需要许多for循环,嵌套for循环等才能实现它并且我在编程方面还不是那么强大 . 我希望有人会尝试像我这样的新手可以学习 . 谢谢 例: set.seed(1) DF = data.frame(V1 =... -
3 votesanswersviews
将Clojure解决方案推广到Euler#1
Q =求出低于1000的3或5的所有倍数之和 . 最简单的答案 (reduce + (filter #(or (== (mod % 3) 0) (== (mod % 5) 0)) (range 1000))) 尝试以下通用答案 (reduce + (list-nums-divisible-by-all-divisors N div1 div2 ...)) (defn list-nums-divi... -
93 votesanswersviews
中型Clojure样品应用?
是否有一个中等大小的Clojure示例应用程序可以用作“最佳实践”示例,并且是一种很好的方法来查看这样的应用程序在代码和代码组织方面会是什么样子?一个Web应用程序对我来说会特别有趣,但最重要的是程序执行一些通常有用的东西(例如博客,错误跟踪,CMS),而不是我从未在真实中实现过的数学世界(解决N-queens问题,模拟生命,生成Fibonacci序列,以及功能编程语言的常用功能) . 谢谢! -
40 votesanswersviews
学习功能/ Clojure编程 - 实践练习? [关闭]
我正在学习Clojure的函数式编程 . 你能推荐什么实际练习?使用解决方案的在线存储库将是完美的 . 我能想到的一个想法是通过排序,树,图等所有流行的算法,并在Clojure中实现它们 . 虽然它可以工作,但它可能非常陡峭,而且我很可能效率低下(与知道她在做什么的人相比) . -
4 votesanswersviews
将var或#'应用于Clojure中的函数列表
我正在尝试在Clojure中读取函数集合的元数据,但var或reader特殊表单不起作用,除非它们直接处理符号 . ; this works (var my-fn) ; this doesn't (defn val-it [x] (var x)) (val-it my-fn) 有没有办法让这个在另一个函数的范围内工作? -
0 votesanswersviews
在申请和不申请和部分在clojure之间有什么区别?
在这段代码中, user> (= (apply partial partial [+]) (partial partial +)) false user> 有什么区别 (应用部分局部[]) 和 (部分偏) ? 在这段代码中, user> (= (apply + []) (+)) true 为什么返回值不是假的呢? -
710 votesanswersviews
函数式编程与面向对象编程[关闭]
到目前为止,我已经主要接触过OO编程,并期待学习一门函数式语言 . 我的问题是: 什么时候选择面向对象的函数式编程? 函数式编程是更好的选择的典型问题定义是什么? -
6 votesanswersviews
Clojure,宏可以做一些无法通过函数完成的事情
我正在学习Clojure宏,并想知道为什么我们不能只使用函数进行元编程 . 据我所知,宏和函数之间的区别在于宏的参数没有被计算,而是作为数据结构和符号传递,而返回值被评估(在调用宏的地方) . Macro作为读者和评估者之间的代理,在评估发生之前以任意方式转换表单 . 在内部,他们可以使用所有语言功能,包括函数,特殊形式,文字,递归,其他宏等 . 功能正好相反 . 在调用之前计算参数,返回值之后... -
48 votesanswersviews
是否存在可用于任何lambda的无操作(NOP)的方法参考?
这可能听起来像一个奇怪的问题,但有没有办法在Java 8中引用Lambda的标准无操作(即null操作,空模式方法,无操作,无操作方法)方法 . 目前,我有一个方法,例如, void foo(Consumer<Object>) ,我想给它一个no-op,我必须声明: foo(new Consumer<Object>() { public void accept(Obj... -
219 votesanswersviews
如果没有可变状态,你怎么能做有用的事情?
我最近一直在阅读很多关于函数式编程的东西,我可以理解它的大部分内容,但是我无法理解的一件事是无状态编码 . 在我看来,通过删除可变状态简化编程就像通过删除仪表板来“简化”汽车:成品可能更简单,但运气好,使其与最终用户进行交互 . 几乎我能想到的每个用户应用程序都将状态作为核心概念 . 如果您编写文档(或SO帖子),状态将随每个新输入而变化 . 或者,如果您玩视频游戏,则会有大量的状态变量,从所有角... -
3 votesanswersviews
这个Ramda.js数据转换可以改进吗?
我有一个商店列表和一个id列表: var stores = [{id: '1', name: 'first store'}, {id: '2', name: 'second store'}, {id: '3', name: 'third store'}]; var ids = ['1', '2']; 我想获取与列表中的ID匹配的商店名称: ["first store", &q... -
2 votesanswersviews
数学序列的进一步要素
假设我有以下等式. 我的目标是创建返回其下一个元素的序列 . 这是我的解决方案,它有效: let rec factorial(n:float) = match n with |0.0 -> 1.0 |n -> n * factorial(n-1.0) let seq1 = Seq.initInfinite( fun i -> factorial(floa...