在观看Nick Partidge关于scalaz的演示 之后 ,我看到了这个例子,这真是太棒了: import scalaz._ import Scalaz._ def even(x: Int) : Validation[NonEmptyList[String], Int] = if (x % 2 ==0) x.success else "not even: %d".format(x).wrapNel.fail println( even(3) <|*|> even(5) ) //prints: Failure(NonEmptyList(not even: 3, not even: 5)) 我试图理解<|*|>方法在做什么,这里是源代码: def <|*|>[B](b: M[B])(implicit t: Functor[M], a: Apply[M]): M[(A, B)] = <**>(b, (_: A, _: B)) 好吧,这相当混乱(!) – […]
我知道在某些语言(Haskell?)中,努力的目标是实现无点式的风格,或者永远不要通过名称明确地引用函数参数。 这是一个非常难以理解的概念,但是这可能会帮助我理解这种风格的优点(或者甚至是缺点)。 谁能解释一下?
“抽象抽象”是什么意思? (请用实例来解释,我经常很难理解一个理论。)
我意识到这可能被认为是一个主观的或者是一个偏离主题的问题,所以我希望不要把它closures,否则会被迁移,也许会被程序员所接受。 我开始学习Haskell,主要是为了我自己的启发,我喜欢支持这种语言的很多想法和原则。 在和Lisp一起玩语言理论课之后,我开始对函数式语言着迷,而且我也听到很多关于Haskell的生产能力的好消息,所以我想我会自己调查一下。 到目前为止,我喜欢这种语言,除了我无法摆脱的一件事情:那些母亲正在执行function签名。 我的专业背景主要是做OO,特别是在Java。 我曾经工作过的大部分地方都有许多标准的现代教条。 敏捷,Clean Code,TDD等。经过这几年的工作,它已经成为我的舒适区; 特别是“好”的代码应该是自我logging的思想。 我已经习惯了在IDE中工作,在这个IDE中,具有非常具有描述性签名的冗长冗长的方法名称对于智能自动完成和用于导航程序包和符号的大量分析工具来说是不成问题的; 如果我可以在Eclipse中按Ctrl + Space,然后通过查看其名称和与其参数相关联的局部范围variables(而不是拉起JavaDocs)来推断出一种方法正在做什么,我就像一头猪一样快乐。 这肯定不是哈斯克尔社区最佳实践的一部分。 我已经阅读了很多关于这个问题的不同意见,我知道Haskell社区认为它的简洁性是一个“专业”。 我已经阅读了如何阅读Haskell ,我理解很多决定背后的原理,但这并不意味着我喜欢它们。 一个字母的variables名等等对我来说都不好玩。 我承认,如果我想继续使用这种语言,我必须习惯这一点。 但我无法克服function签名。 拿这个例子来说,从学习Haskell […]的函数语法部分: bmiTell :: (RealFloat a) => a -> a -> String bmiTell weight height | weight / height ^ 2 <= 18.5 = "You're underweight, you emo, you!" | weight / height ^ 2 […]
在使用函数式语言的一些经验之后,我开始在Java中使用更多的recursion – 但是这种语言似乎有一个相对较浅的大约1000的调用堆栈。 有没有办法让调用堆栈更大? 就像在Erlang一样,我可以使function深入数百万次吗? 我在做Project Euler问题时越来越注意到这一点。 谢谢。
我已经学习了使用Matlab作为原型工具的机器学习课程。 自从我沉迷于F#之后,我想继续在F#中学习机器学习。 我可能希望将F#用于原型和生产,所以机器学习框架将是一个很好的开始。 否则,我可以从一个库的集合开始: 高度优化的线性代数库 统计包 可视化库(允许绘制和与图表,图表交互) 并行计算工具箱(类似于Matlab的并行计算工具箱) 最重要的资源(对我来说)是书籍 ,博客文章和关于机器学习的在线课程(F#/ OCaml / Haskell …)。 任何人都可以提出这些资源? 谢谢。 编辑: 这是一个基于以下答案的总结: 机器学习框架: Infer.NET :用于支持良好F#的graphics模型中用于贝叶斯推理的.NET框架。 WekaSharper :围绕stream行的数据挖掘框架Weka的F#封装。 Microsoft Sho :.NET平台上用于数据分析(包括matrix运算,优化和可视化)的持续环境开发。 相关图书馆: Math.NET数字 :内部使用英特尔MKL和AMD ACML的matrix操作和支持统计function。 Microsoft Solver Foundation :一个线性编程和优化任务的好框架。 FSharpChart :F#中一个很好的数据可视化库。 阅读清单: 数值计算 :从F#中的机器学习入手非常棒,并且介绍了在F#中使用这些math函数库的各种工具和技巧/技巧。 F#和数据挖掘博客 :也是“数值计算”一书作者尹竺强烈推荐的。 F#作为机器学习的Octave / Matlab替代品 :Gustavo刚刚开始使用F#作为开发工具的一系列博客文章。 很高兴看到许多图书馆被连接在一起。 “机器学习在行动”的F#示例 :Mathias已经将一些Python样本翻译成F#。 它们在Github中可用。 Hal Daume的主页 :Hal在OCaml写了一些机器学习库。 如果您怀疑函数式编程不适合机器学习,那么您会感到宽慰。 任何其他的指针或build议也是受欢迎的。
我刚刚开始熟悉种类的概念,所以如果我不能很好地解决我的问题,请耐心等待… 值有types: 3 :: Int [1,2,3] :: [Int] ('c',True) :: (Char,Bool) types有种类: the type 'Int' has kind * the type '[Int]' also has kind * but the type constructor [] has kind * -> * similarly, the type (Char,Bool) has kind * but the type constructor (,) has kind * -> * -> * 种类有什么? […]
从我的编程生涯第一天起,我开始使用面向对象编程。 然而,我有兴趣去学习其他的范例(我曾经在这里说过的东西有好几次是好事,但我没有时间去做)。 我想我不仅准备好了,而且还有时间,所以我将用F#开始函数式编程。 但是,我不确定如何构build更less的devise应用程序。 我习惯于OO编程中的每个文件和类名词/函数动词的一个概念。 你如何devise和构buildfunction性应用程序?
包“scala”有许多类Product,Product1,Product2等,直到Product22。 这些类的描述无疑是精确的。 例如: Product4 is a cartesian product of 4 components 确实,是的。 交际? 没那么多。 我期望这是一个已经理解这里使用的“笛卡尔产品”意义的人的完美措辞。 对于没有的人来说,这听起来有点循环。 “哦,是的,当然,产品4是四个咕</s>咕嘟咕嘟的咕咕咕咕咕咕咕咕咕咕咕咕咕 请帮助我理解正确的function语言观点。 这里使用的“笛卡尔积”是什么意思? 产品类的“投影”成员表示什么?
可以请某人解释在Scala上下文中Functor和Monad之间的区别吗?