Factor语言编程示例

发布时间 2023-07-20 20:06:30作者: yhm138

语言简介

https://rosettacode.org/wiki/Category:Factor

Factor 是一种基于堆栈的、串联的通用编程语言,注重实用性。

Factor 最初由 Slava Pestov 开发,于 2003 年作为一种为游戏编写的脚本语言诞生。该实现最初是用Java编写的解释器,但后来获得了优化编译器,并使用最小的C++核心在 Factor 中进行了重写。在此处阅读有关 Factor 实施历史的更多信息。截至 2020 年 6 月,Factor 仍在由多个贡献者开发,最新稳定版本已于 2018 年 7 月发布。

Factor 是一种类似于 Forth 的堆栈语言,但级别比Forth更高。Factor 是一种连接语言,这意味着我们不是将函数应用于参数(应用语言)来评估事物,而是编写函数来评估单个数据——直到该特定点的整个程序。在Factor中,数据流的基本结构是函数组合。也就是说,foo bar baz相当于baz(bar(foo()))应用语言中的。这提供了一种很好的从左到右的阅读方式和数据流。

示例

ATO上运行

#! 中文注释,判断一个数字正着写和反过来写是不是都是完全平方数。
USING: formatting io kernel math.parser project-euler.common sequences ;
IN: aspen138

read-lines [ dec> ] map dup
[ >dec dup reverse [ dec> perfect-square? ] both? ]
map [ "%-13d -> %u\n" printf ] 2each