玩弄无点代码?

7
我一直在学习Factor和J语言,以尝试使用无点编程进行实验。这些语言的基本机制似乎很清楚,但是如何设计算法还是有挑战的。
对我而言,一个特别令人困惑的问题是如何构建代码,使得容易对不同参数进行实验。我指的是Mathematica和Matlab擅长的类型;您设置一个算法,然后操作变量并观察发生了什么。
没有显式变量,如何做到这一点呢?也许我的思路有误。在无点编程中,我应该如何处理这个问题?
2个回答

9
以下是我在处理连接范式时发现非常有帮助的三个重要建议(以我的情况为例,适用于Factor编程语言):
  • 无情地分解代码。编写极小的函数:如果有超过3-4个堆栈参数,或许可以将其分解成更小的部分。
  • 投资时间学习数据流组合器(bi、tri、cleave、spread等)。它们允许表达常见的数据流模式,同时消除了复杂的堆栈洗牌需求。
  • 学会从其他引文中构建引文。使用柯里化技术(curry、with等)从堆栈参数构建简单的引文,当事情变得太复杂时使用炸鱼引文(“fry”词汇)。它们允许轻松地从模式构建复杂的嵌套引文,而无需进行任何堆栈洗牌。

另外,请阅读并“Walk”进入现有代码。在Factor中,探索运行时并查看事物如何工作相当容易。

对于您特定的困惑源,如果您的算法有很多输入参数,则最重要的事情是研究它们将如何使用。收集数据流模式。您必须真正思考在最小的相关参数集上“安排”操作的最佳方式。

这是一次相当困难的经历,但成功后也是非常有回报的。我们感觉像人类编译器一样。

祝你好运!


0

我在连接式编程语言Joy和Backus FP-like语言方面有一些经验。关于算法设计,我可以说这是一个非常结构化的算法设计。

你如何在没有显式变量的情况下完成这个任务?

实际上,在类似Backus FP的语言中是没有全局变量的。然而,并没有阻止使用一些受限制的局部变量,比如实例变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接