通过Racket 运行arc这个新型的lisp语言
也许arc这个编程语言无法成为100年后的编程语言,但至少它能达到100年后基本上还能用的地步...
1. Install Racket from http://racket-lang.org. 2. Get http://www.arclanguage.org/arc3.2.tar and untar it. 3. Type racket -f as.scm and you should get an Arc prompt. 4. If you have questions or suggestions, post them on the forum. |
使用arc源码的方法1
首先下载并解压
wget http://www.arclanguage.org/arc3.2.tar
tar -xvf arc3.2.tar
文件只有270KB,非常小巧
创建目录和文件
cd arc3.1
mkdir arc
echo "myname" > arc/admins
安装racket
sudo apt install racket
依赖的库还是挺大的,
Need to get 163 MB of archives.
After this operation, 702 MB of additional disk space will be used.
启动arc
racket -f as.scm
Use (quit) to quit, (tl) to return here after an interrupt.
打开个web服务器吧
(load "news.arc")
(nsv)
不要忘记执行下面的(nsv),我就是忘记执行了,一开始服务器就没有开。
执行之后,输出
ready to serve port 8080
而且这个已经是绑定在0.0.0.0 上的,所以可以远程登录。
使用anarki源码的方法2
参考:Arc Programming Language
首先安装依赖库git和racket
sudo apt install git racket
通过racket安装和执行Arc
raco pkg install sha
git clone http://github.com/arclanguage/anarki
cd anarki
./arc.sh
这里raco pkg install sha碰到了问题,那么就不装。
直接进入Arc交互界面
./arc.sh
让我们输入一些Arc基本语法指令看看吧:
./arc.sh
Use (quit) or ^D to quit, (tl) to return here after an interrupt.
arc> 25
25
arc> "foo"
"foo"
arc> (+ 1 2 )
3
arc> (+ (+ 1 2) (+ 3 (+ 4 5) ) )
15
arc> (= foo 13)
13
arc> 'foo
foo
arc> `foo
foo
arc> '(+ 1 2)
(+ 1 2)
arc> (cons 'f '(a b))
(f a b)
其它
Arc的特点
Arc减少了括号的数量,并具有一些花哨的内置语法,以使常见的代码更短。例如:
;; scheme
(if p1 c1
(if p2 c2
(if p3 c3 a3)))
;; arc simplifies if
(if p1 c1
p2 c2
p3 c3
a3)
;; scheme
(f1(f2(f3 a b)))
;; arc simplifies cascading calls
(f1:f2:f3 a b)
参考:Arc相对于Racket的优势 lisp arc-lisp - Dev59
Racket 解决问题 · 创造语言
同时了解了Racket 这门语言
Racket
安装参考这里:在FreeBSD、Windows、Ubuntu24三种平台下安装Racket-CSDN博客
调试
raco pkg install sha报错Connection reset by peer; errno=104
raco pkg install sha
Resolving "sha" via https://download.racket-lang.org/releases/8.10/catalog/
error reading from stream port
system error: Connection reset by peer; errno=104
context...:
/usr/share/racket/collects/openssl/mzssl.rkt:953:0: pump-input-once
/usr/share/racket/collects/openssl/mzssl.rkt:1416:0: wrap-ports
/usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
/usr/share/racket/collects/net/http-client.rkt:67:0: http-conn-open!
/usr/share/racket/collects/net/http-client.rkt:274:0: http-conn-open
/usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
/usr/share/racket/collects/net/url.rkt:202:0: http://getpost-impure-port
/usr/share/racket/collects/net/url.rkt:305:0: get-pure-port/headers
/usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
/usr/share/racket/collects/pkg/private/network.rkt:59:3
/usr/share/racket/collects/pkg/private/catalog.rkt:218:0: read-from-server
/usr/share/racket/collects/pkg/private/catalog.rkt:135:2: lookup-normally
/usr/share/racket/collects/pkg/private/prefetch.rkt:129:4
/usr/share/racket/collects/pkg/private/prefetch.rkt:128:2
/usr/share/racket/collects/pkg/private/catalog.rkt:132:0: package-catalog-lookup
/usr/share/racket/collects/pkg/private/catalog.rkt:200:0: package-catalog-lookup-source
后来在FreeBSD测试,也是报错。
在Windows下,能安装上sha。Windows下的版本是最新版,不知道是不是版本问题。
执行.arc.sh提示Please install rlwrap with your OS's package manager
./arc.sh
Please install rlwrap with your OS's package manager (apt-get, dpkg, rpm, yum, pacman, etc.)
Or run arc without rlwrap: "./arc.sh -n"
按照提示,要么安装rlwrap,
sudo apt install rlwrap
要么直接执行"./arc.sh -n"
还是老老实实的安装了rlwarp