问题标签 [concatenative-language]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
forth - Obtaining a Factor binary... still possible with the Factorcode.org website down?
UPDATE (12-Mar-2014):
All sites are back: factorcode, planet-factor, builds.factorcode, and concatenative. Downloads are back. Looks like the sites were moved to a different host (Rackspace?) and quite significantly revamped.
(This can question can be considered closed.)
I've been trying to get a recent Windows binary of the Factor programming language, but it has been confounded by the fact that the factorcode.org website appears to be down.
Unfortunately, all download links seem to point back to it, specifically to builds.factorcode.org
.
I don't know how long it's been this way, but it seems not to be the first time... It looks like it's been down since the start of March, and there's noise about this in October, and again in December.
As Factor is open-source, I was hoping that binaries might be mirrored somewhere else. But what used to be on SourceForge appears to have been removed to factorcode.org
, and the main GitHub repository for Factor also seems to be hosted on factorcode.org
.
How do I obtain binaries? It there perhaps another way?
(P.S.: these related sites are also down: Concatenative.org and Planet Factor.)
I have used Forth a fair amount and recently have been hearing more about Factor. Given that Google seems to have hired Slava Pestov (creator of Factor) and Daniel Ehrenberg (collaborator with Slava on developing Factor), thought I'd see what the buzz is about -- 'kick the tyres' so to speak.
haskell - 制作串联 Haskell 变体:应用和组合的优先级
我正在学习连接语言的基础知识,其最初的想法是函数名称连接与函数组合相同,而不是像 Haskell 中的函数应用程序。
Joy、Forth 或 Factor 是后缀,这意味着基于堆栈,但也有一些前缀连接语言,例如 Om。
我想知道 Haskell 变体理论上是否可以通过将组合优先级(现在为 9)与函数应用程序优先级(现在为 10)交换(甚至等于)来成为一种连接语言。
如果 Haskell 中的值只是零参数函数,为什么函数应用与函数组合不同?,函数应用与用零参数函数组合不一样吗?
是否有可能以简单的方式制作一个解释器或预编译器,通过定义具有不同优先级的新组合和应用运算符,并将连接语法转换为 Haskell 语法,并假设没有括号的简单连接是组合?我认为这只是语法问题,我错了吗?它可以避免许多我们必须在 Haskell 中使用括号或 $ 运算符的情况。或者它是一个更根本的问题,而不仅仅是语法和优先级?
提示:假设 Haskell 中的每个函数和运算符都是前缀,我们可以在这个练习中忘记中缀符号和各种“语法糖”。
julia - 如何在 Julia 中表示高性能的异构堆栈
我想在 Julia 中实现一种简单的连接语言(又名 Joy 或 Factor)作为 DSL,我很困惑如何以最佳方式表示堆栈。
代表数据和程序代码的堆栈应该能够保存一系列不同类型的项目。在最简单的情况下,Ints、Symbols 以及递归的堆栈(以表示引用的代码)。然后该程序将大量使用推送!和流行!在不同的此类堆栈之间打乱值。
Julia 中一个明显的实现是使用元胞数组,它有效但运行速度相当慢。例如,以下 Joy 堆栈[ 1 [ 1 2 +] i + ]
(计算结果为[4]
)可以在 Julia 中实现为
stack = Any[:+,:i,Any[:+,2,1],1]
。我的典型代码如下所示:
然而,这运行速度非常慢并且使用了巨大的内存分配,可能是因为这样的代码不是可类型化的(这是 Julia 的一个很大的性能瓶颈)。
使用 C,我会将堆栈紧凑地表示为联合的数组(或链表):
但是如何在 Julia 中实现异构堆栈的如此紧凑的表示,以及如何避免类型不稳定性?
factor-lang - 循环输入引号与预期效果不符
我正在尝试编写一个文本编辑器来模仿ed
. 在ed
中,您一次写入一行输入,并在您输入一行时完成.
。这是我想出的:
此代码段一次从用户那里获取一行输入,当它到达一个点时停止,并返回一个字符串数组。
当它单独出现时,我没有收到任何错误,但是一旦我尝试把它变成一个词:
我收到以下错误:
我认为这可能与编译器不关心堆栈声明有关,当它不在一个单词中时,而不是在它的时候。修改循环下的堆栈是否不满意?我知道call( )
,但是如果我需要在这里使用它,怎么办?
编辑:我也尝试了以下方法:
我得到一个类似的错误,但是堆栈效果略有不同:
同样,它本身很好,但总而言之,它不能编译。
stack - 一个类似 Forth 的语言可以用一个栈来实现吗?
Forth 有一个栈和一个返回栈。
据我了解,返回堆栈的目的是存储程序计数器的先前值。
C 程序将程序计数器的先前值放在堆栈上,并且不使用返回堆栈。
Forth 是否只需要一个返回堆栈,因为它在堆栈上返回结果,因此程序计数器的先前值可能会被掩埋?
stack - 因子编程语言:设置 .factor-roots 配置
我下载了适用于 Mac 的Factor编程语言。我现在可以factor
成功地从命令行启动命令。我在一本涵盖这种语言的书中读到(...中的七种语言),要运行独立程序,我需要指出 Factor 将从中搜索词汇表的根路径。因此,我必须在我的主目录中创建一个.factor-roots
文件,指示我拥有 Factor 源文件的根目录的完整路径,每行一个路径。我的因素文件夹在/Applications
文件夹中。因子目录包含:
我应该在.factor-roots
文件中准确地写什么,以使其工作?
haskell - 级联编程语言中的偏函数应用
假设我有一个 haskell 函数f n l = filter (n<) l
,它接受一个整数n
和列表l
并返回l
大于 then的所有整数n
。
我试图弄清楚如何用 Joy 这样的语言最好地编写这个函数。我通常很幸运地将haskell函数转换为无点形式f = filter . (<)
,然后尝试从那里用Joy重写它。但我不知道如何用串联语言模拟部分函数应用程序。
到目前为止,我已经尝试做类似的事情swap [[>] dip] filter
,但似乎必须有更好/更清洁的方式来编写它。
另外,我正在尝试编写自己的连接语言,并且想知道惰性评估是否可以与连接语言兼容。