我最近看了一下Factor,并且有一种基于堆栈概念的语言的想法非常有趣.(这是我第一次遇到面向堆栈的语言.)但是,我没有看到这种范式的任何实际优势.对我来说,它似乎比它的价值更麻烦.为什么我会使用像Stack或Forth这样的面向堆栈的语言?
我忽略了因素(借口双关语),例如工具和库的可用性.我只询问语言范式本身.
最近遇到了这个关于Factor的介绍,我有点好奇了解更多.除了那里提到的官方常见问题解答之外,你是否有资源学习这门语言(以及基于堆栈的"范例",如果这是正确的话),你发现它有用吗?
作为旁注,会学习Forth帮助,还是将C与Python(或者你有什么)进行比较?
你打算使用Factor吗?你看过了吗?检查出来.你了解面向堆栈的编程吗?
是否有一个用因子语言编写的非平凡的示例应用程序,可以用于GUI应用程序,可以作为语言教程服务器?
我一直在学习Factor和J语言来试验无点编程.这些语言的基本机制似乎很清楚,但是如何理解如何进行算法设计是一项挑战.
对我来说,一个特殊的混淆源是如何构造代码以便很容易地尝试不同的参数.通过这个,我的意思是Mathematica和Matlab如此擅长的事情; 你设置了一个算法然后操纵变量并观察发生了什么.
没有显式变量,你怎么做?也许我在想这一切都错了.我应该如何在无点编程中实现这一点?
functional-programming j pointfree tacit-programming factor-lang
我读过(来自Slava Pestov)因为Lisp影响了因子,但我不确定我能理解怎么样?他们的编程语言不是很不一样吗?
因子手册的这一页讨论了存储在continuation中的这些类型的堆栈:
这些堆栈究竟拥有什么?对我来说最令人困惑的三个是callstack,retainstack和namestack.
我有一个单词构造了一个我想要被引用的引文.但是,当我加载代码时,我得到的不能将"call"应用于运行时计算值.如果我使用walker并逐步执行它按预期执行的代码.你怎么称呼建造的报价?
: ba>struct ( array class -- struct array )
[ <struct> swap ] keep struct-slots
[
[ type>> to-type ] keep
name>> setter-word 1quotation curry
[ over ] dip curry call drop
] each
;
Run Code Online (Sandbox Code Playgroud)
编辑:这确实有效
: ba>struct ( array class -- struct array )
[ <struct> swap ] keep struct-slots
[
[ type>> to-type ] keep
name>> setter-word 1quotation curry
[ over ] dip curry call( -- x ) drop
] each
;
Run Code Online (Sandbox Code Playgroud)
问题源于运行时不知道构造引用的堆栈效应是什么.在这些情况下,您必须声明堆栈与调用的引用相似.