Why不愧是一代Ruby大牛,连monadic combinator这个Haskell最著名的概念之一也能极简单地用Ruby复制出来:http://redhanded.hobix.com/inspect/hoppingThroughPipesAndClosures.html
突然感觉和java社团搞模式框架相比,ruby社团更津津乐道于这样的“奇巧淫技”,也许这正是文化差异和乐趣所在。
update: 前阵子被人推荐去学J语言,一种发源于古老的APL的面向数组/向量语言,适合数据分析。特点是简洁得过分,充满了one liner/line noise。虽然还是感觉非常难理解,不过确实有不少闪光的设计思想。它把函数称为动词,数据称为名词。动词是类似操作符一样的形式,所以分为monad和dyad两种,monad是单边的,dyad是双边的,不理解的就当是运算符过载好了。这些都还能用别的语言模拟,就是没J那么简洁罢了。最神奇的还有一种叫副词,副词的作用是修饰动词!(不像decorator模式那样是修饰对象/名词)。比如+是加运算,/副词起间隔作用,所以+/合起来就变成了累加运算: +/ 1 2 3 => 1 + 2 + 3,\的作用是tracing,+/\就是tracing summary:+/\ 1 2 3 => 1, 1 +2, 1+2+3 => 1 3 6。J虽然不是完全的functional语言,但是其编程风格就是不断组合各种动词副词最后得出一个复杂的运算动词,再整体运用到一个名词上去。
分享到:
相关推荐
在这个项目中,"monadic未来实现"指的是采用函数式编程中的Monad概念来设计Future。Monad是一种抽象的概念,它定义了一组操作规则,可以用于处理数据的组合和转换。在Kotlin中,我们可以利用协程的Context和Scope来...
Monadic Parser Combinators..............................................................................................................................
标题《How to build a monadic interpreter in one day》和描述中提到的“使用Haskell和Monad技术实现一个解释器。又学Monad也学解释器。”,已经明确指出了本文的核心内容。该内容将介绍如何通过Haskell98标准来...
Monadic解析器组合器库实现。 用法 运行测试 $ make test 目标 简单的解析器组合器( parser.sf ) 简单算术表达式解析器( simple_arith_expr_parser.sf ) 懒惰的评估列表( plist.sf ) 简单的XML解析器...
在这个特定的项目"monadic-parser"中,它提供了一个简单的实现,允许开发者以一种声明式的方式编写解析规则。 一元解析器(Monadic Parsers)的概念源于Haskell的Monads,Monads是一种强大的抽象机制,用于封装计算...
Meijer 定义的(一些) monadic 解析器组合器的 Javascript 实现(参见 [1],见下文)。 你可以在这里看到组合器的作用(组合器用于定义解析函数): [1] G. Hutton 和 E. Meijer, Haskell 中的 Monadic 解析,...
Parsel是一个专为ComputerCraft设计的Monadic解析器组合器库,它将函数式编程中的Monadic解析器概念引入到Lua语言中,以解决动态类型的挑战。在深入探讨Parsel之前,我们先来了解一些基本概念。 ### Monadic解析器...
火腿Java 中的 Monadic 组合器解析器框架 Javadoc 在发布二进制文件可以从下载可以从下载快照如果这样更方便的话,还有一个用于您的build.gradle : testCompile 'se.fnord:jamon:1.1.0'执照该软件是在许可下获得...
zetta.core包含开始使用 zetta 解析器的基本功能,例如解析器运行器、解析器的 monadic 实现等。 zetta.parser.seq包含您可能会找到的最基本的解析器,您可以使用zetta.combinators命名空间zetta.combinators即...
这是一个用于 monadic 解析器组合器的库,它基本上是来自 idris 的 SimpleParser,它泛化了更多的数据类型,而不仅仅是 String。 还有一个带有类似 Tagsoup 的输出的 HTML 解析器,它应该可以很好地工作以供使用。...
**解析器组合库在 Elm 中的角色** `parser-combinators` 是一个专为 Elm 语言设计的解析器组合库。Elm 是一种静态类型的函数式编程语言,常用于构建用户界面,尤其是 Web 应用程序。这个库允许开发者通过组合简单...
ParsecJ是一个Java monadic解析器组合器框架,用于构造LL(1)解析器。 它是Haskell Parsec库的端口。 在可能的情况下,该实现是Parsec原始论文中概述的Haskell代码的直接Java端口。 一些值得注意的功能包括: 可...
在Scala中, Monad通过实现特定的接口(如`flatMap`和`map`方法)来实现。 **DSL(Domain Specific Language)** DSL是针对特定领域的编程语言,通常用于简化特定任务的编程。在Scala中,由于其强大的类型系统和...
受启发的JavScript的Monadic解析器组合器。 import * as lq from "@loquat/simple" ; const nat = lq . digit . manyChars1 ( ) . map ( str => parseInt ( str , 10 ) ) ; const op = lq . choice ( [ lq . char...
在传统的C#中,这些协定是隐式的,例如通过可能抛出的异常(立即中止当前执行路径)或假定具有该语义的空值来实现。 简而言之,您的程序员必须始终意识到并警惕这些隐含商定的合同。 在这种情况下,使用null尤其有...
MASIO - Monadic Boost.Asio Boost.Asio 是一个很棒的库,因为它提供了跨不同平台的统一 API,并且该 API 使开发人员从线程、锁等方面的思考中解放出来。 也就是说,在使用库一段时间后,人们意识到每次调用异步...
作为“monadic解析器组合器库”,它利用了Haskell的monad概念,允许开发者以声明式方式构建解析器,同时保持错误处理的简洁性和清晰性。这种设计模式使得代码易于理解和维护,特别适合于需要解析语法复杂的软件项目...
该库的目标是通过以下类使Ruby中最常见,最有用的Scala monadic惯用语: 选项 大批 任何一个 杂凑 更多即将推出 对类似于scala的理解的语法支持将通过对flat_map , select等的调用序列实现,以对Scala的方法进行...
雷帕斯Lexepars是一个简洁,轻巧但功能强大的monadic解析器组合器库。 意味着您将始终获得最终的解析结果。 Combininig更轻松的解析器可以使您构建复杂的语法(反过来又是解析器)。 该库可以与功能齐全的解析器生成...
Monadic CP,全称为“Monadic Constraint Programming”,是一种在函数式编程语言中,特别是Haskell中,实现约束编程的方法。这种编程范式结合了Monads(范畴论中的一个概念,常用于处理计算和副作用)与约束求解...