什么是"monadic反射"?

Tuo*_*nen 14 f#

什么是"monadic反射"?

如何在F#程序中使用它?

术语"反射"的含义是否与.NET反射相同?

ZXX*_*ZXX 8

Monadic反射本质上是用于描述分层monad或monad分层的语法.在Haskell中,描述也意味着构建monad.这是一个更高级别的系统,所以代码看起来像功能,但结果是monad组合 - 意味着如果没有实际的monad(它们是无功能的),那么在一天结束时没有任何真实/可运行的东西.菲林斯基最初试图将一种monad仿真用于Scheme,但更多的是探索monad的理论方面.

评论中的更正 - F#有Monad等价的名为"Computation Expressions"

菲林斯基在POPL 2010上的论文 - 没有任何代码,但有很多理论,当然还有他1994年的原始论文 - 代表莫纳德.加上一个代码:Monad Transformers和Modular Interpreters(1995)

哦,对于喜欢代码的人--Filinski的代码是在线的.我只列出一个 - 走一步,看另一个7和自述.还有一些声称受Filinski启发的F#代码

  • F# 有 monad... http://en.wikibooks.org/wiki/F_Sharp_Programming/Computation_Expressions (2认同)
  • Monad 没有功能是什么意思? (2认同)

Nat*_*ers 3

我通读了第一部谷歌热门作品,一些幻灯片:

http://www.cs.ioc.ee/mpc-amast06/msfp/filinski-slides.pdf

由此看来

  1. 这与 .NET 反射不同。这个名字似乎是指将数据转化为代码(反之亦然,具体化)。
  2. 该代码使用标准的纯函数操作,因此在 F# 中实现应该很容易。(一旦你明白了)
  3. 我不知道这对于实现递归函数的不可变缓存是否有用。看起来您可以定义可变操作并自动将它们转换为等效的不可变操作?我实在看不懂幻灯片。

Oleg Kiselyov 也有一篇文章,但我什至没有尝试阅读它。还有Jonathan Sobel(等人)的一篇论文。第 5 条是这个问题,所以我不再关注这个问题。