プログラミング言語Arc
あのPaul Grahamが長年考案しつつもベーパーウェアだったArcがとうとう発表された。
これを使えば今日から君もスーパーハッカーだ(*注: Arcは現在のところASCII以外の
文字を適切に扱えません)。
公式サイト
http://www.arclanguage.org/
インストール
http://www.arclanguage.org/install
チュートリアル
http://ycombinator.com/arc/tut.txt
非公式リファレンス
http://practical-scheme.net/wiliki/arcxref
* なぜArcはとりたててオブジェクト指向でないのか
http://practical-scheme.net/trans/noop-j.html
【普通のやつらの】 Arc Language 0 【上を行け】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2008/02/04(月) 13:22:292008/02/04(月) 13:25:01
ヲタク言語
2008/02/04(月) 14:01:07
へーあのグレアムの。
暇が出来たらやってみよう。
暇が出来たらやってみよう。
2008/02/04(月) 18:18:13
文字列を内部的にはリストにしてるんかいなぁ?
arc> (subst 'a '(b) '(a b c))
"aac"
arc> (+ '(a b c) '(d e f))
(a b c d e f)
arc> (+ "abc" "def")
"abcdef"
arc> (subst 'a '(b) '(a b c))
"aac"
arc> (+ '(a b c) '(d e f))
(a b c d e f)
arc> (+ "abc" "def")
"abcdef"
2008/02/04(月) 18:24:27
慣れるとわりといいかも
arc> (= x '((a . a1)(b . b1)))
((a . a1) (b . b1))
arc> x
((a . a1) (b . b1))
arc> (= (caar x) 'z)
z
arc> x
((z . a1) (b . b1))
arc>
arc> (= x '((a . a1)(b . b1)))
((a . a1) (b . b1))
arc> x
((a . a1) (b . b1))
arc> (= (caar x) 'z)
z
arc> x
((z . a1) (b . b1))
arc>
2008/02/04(月) 18:31:12
なんか静ですね
2008/02/04(月) 18:54:39
これいい
arc> (trues [if (odd _) (+ _ 10)] '(1 2 3 4 5))
(11 13 15)
arc> (trues [if (odd _) (+ _ 10)] '(1 2 3 4 5))
(11 13 15)
2008/02/04(月) 20:52:02
>>4
subst は substring の略っぽい。
http://practical-scheme.net/wiliki/arcxref?subst
List に対する subst(itute) は tree-subst という関数がある。
http://practical-scheme.net/wiliki/arcxref?tree-subst
この辺の命名規則はまだ適当みたいだな。
ソースは簡単に読めるので一度読んでみるといいかも。
subst は substring の略っぽい。
http://practical-scheme.net/wiliki/arcxref?subst
List に対する subst(itute) は tree-subst という関数がある。
http://practical-scheme.net/wiliki/arcxref?tree-subst
この辺の命名規則はまだ適当みたいだな。
ソースは簡単に読めるので一度読んでみるといいかも。
2008/02/04(月) 21:56:42
10デフォルトの名無しさん
2008/02/05(火) 00:41:19 いまさら、こんな糞言語使わなくても、動的言語ならrubyでいいだろ。
2008/02/05(火) 00:44:31
動的言語w
2008/02/05(火) 00:46:17
プ rubyww
13デフォルトの名無しさん
2008/02/05(火) 00:57:57 >>10
わかりやすすぎ
わかりやすすぎ
14デフォルトの名無しさん
2008/02/05(火) 01:08:27 マジな話、arcがrubyより優れている所ってあるの?
2008/02/05(火) 01:10:11
rubyは嫌いじゃないが、ruby使ってる人は厭な人が多いな
2008/02/05(火) 01:10:57
>>14
rubyを知らなくても使えるという点じゃないかな
rubyを知らなくても使えるという点じゃないかな
2008/02/05(火) 01:13:51
まだ生まれて間もないという所が優れている
18デフォルトの名無しさん
2008/02/05(火) 01:21:10 まだまだこれからってことだな。5年後まだ残ってたら使ってみるよ。
2008/02/05(火) 01:27:06
はい、さよおなら
2008/02/05(火) 01:43:06
2008/02/05(火) 01:52:50
だれかEmacsの環境作れてるひといる?
inferior-lisp-programでArcを指定する方法はやったんだけど、
SLIME とかで使えんのかな
inferior-lisp-programでArcを指定する方法はやったんだけど、
SLIME とかで使えんのかな
2008/02/05(火) 02:14:10
チュートリアルプレインテキストw
2008/02/05(火) 03:06:02
だが、それがいい
2008/02/05(火) 07:36:38
>>20
seq ってのは文字列とリストのことなんかね。
arc> (findsubseq '(c) '(a b c d))
2
arc> (findsubseq "c" "abcd")
2
arc>
seq ってのは文字列とリストのことなんかね。
arc> (findsubseq '(c) '(a b c d))
2
arc> (findsubseq "c" "abcd")
2
arc>
2008/02/05(火) 09:26:41
2008/02/05(火) 17:38:15
とりあえず階乗。
Schemeと何が違うんじゃ ってのは勘弁して。
(def fact (n)
(if (is n 0)
1
(* n (fact (- n 1)))))
Schemeと何が違うんじゃ ってのは勘弁して。
(def fact (n)
(if (is n 0)
1
(* n (fact (- n 1)))))
2008/02/05(火) 17:45:10
26向けじゃなくて、Schemeと大きく違うところって何?
2008/02/05(火) 19:10:10
isが同一、同値、同形判定のどれを意図してるのか判らん
2008/02/05(火) 19:47:27
>>27
Schemeはマクロやモジュールをどうするかで悩んでる
その結果、変な言語でマクロを記述したりR6RSでREPLがなくなったりしてる
Arcはその辺に関して楽観的というか何も考えてないっぽい
Schemeはマクロやモジュールをどうするかで悩んでる
その結果、変な言語でマクロを記述したりR6RSでREPLがなくなったりしてる
Arcはその辺に関して楽観的というか何も考えてないっぽい
2008/02/05(火) 19:52:01
2008/02/05(火) 20:07:05
試してみた。
arc> (is 1 1)
t
arc> (is 'a 'a)
t
arc> (is "a" "a")
t
arc> (is '(a b) '(a b))
nil
arc> (iso '(a b) '(a b))
t
arc>
arc> (is 1 1)
t
arc> (is 'a 'a)
t
arc> (is "a" "a")
t
arc> (is '(a b) '(a b))
nil
arc> (iso '(a b) '(a b))
t
arc>
2008/02/05(火) 21:47:27
Rubyの方が断然いいね。
2008/02/05(火) 21:56:36
Rubyのどこがいいのか判らん
34デフォルトの名無しさん
2008/02/05(火) 21:57:50 Pythonのほうが断然いいね
2008/02/05(火) 22:33:16
リアルハッカーなら断然Perlだよね
2008/02/05(火) 22:33:45
リアルハッカーw
2008/02/05(火) 22:35:34
Arcに欠けているもの、それは、、、、、
Guy L Steel兄貴の存在
Guy L Steel兄貴の存在
2008/02/05(火) 22:37:07
schemeが.netに対応してVisual Studioに統合されたら最強だわ。
2008/02/05(火) 22:39:05
わしはコモンリスプのほうがいいのお
2008/02/05(火) 22:39:50
> 欠けているもの
オライリーの本
オライリーの本
2008/02/05(火) 22:43:03
やれやれ、グレアム自身が実装されたArcの発表は当分先だな。
2008/02/05(火) 22:45:01
彼自身が人工知能になっちまうのかい?
2008/02/05(火) 23:00:05
ArcのうちSchemeで書かれたコアな部分は1000行くらいなんで読んでる。
けっこう発見があって面白い。黒川利明先生のLispの本にあったLispでLispを記述
する部分を思い出している。
ところでnamespace-set-variable-value!ってどこで定義しているのかと探しても
見つからない。プリミティブだった。へ〜。そんなのあるんだ。
(namespace-set-variable-value! 'a 1)
> a
1
> namespace-set-variable-value!
#<primitive:namespace-set-variable-value!>
>
けっこう発見があって面白い。黒川利明先生のLispの本にあったLispでLispを記述
する部分を思い出している。
ところでnamespace-set-variable-value!ってどこで定義しているのかと探しても
見つからない。プリミティブだった。へ〜。そんなのあるんだ。
(namespace-set-variable-value! 'a 1)
> a
1
> namespace-set-variable-value!
#<primitive:namespace-set-variable-value!>
>
2008/02/05(火) 23:02:23
今のグレアムは既にVer.11ぐらいらしい。
2008/02/05(火) 23:09:32
誰が保守してんだ
2008/02/05(火) 23:10:08
グレアム
2008/02/05(火) 23:14:38
:aでSchemeに抜けて acompileを使うとコンパイルされた結果が
Schemeファイルとして出力される。
> (acompile "fact.arc")
#t
>
((lambda ()
'nil
(ar-funcall3 _sref _sig '(n . nil) 'fact)
((lambda ()
'nil
(if (not (ar-false? (ar-funcall1 _bound 'fact)))
((lambda ()
'nil
(ar-funcall1 _disp "*** redefining ")
(ar-funcall1 _disp 'fact)
(ar-funcall1 _writec #\newline)))
'nil)
(begin
(let ((| fact|
(lambda (n)
'nil
(if (not (ar-false? (ar-funcall2 _is n 0)))
1
(ar-funcall2
_*
n
(ar-funcall1 _fact (ar-funcall2 _- n 1)))))))
(namespace-set-variable-value! '_fact | fact|)
| fact|))))))
Schemeファイルとして出力される。
> (acompile "fact.arc")
#t
>
((lambda ()
'nil
(ar-funcall3 _sref _sig '(n . nil) 'fact)
((lambda ()
'nil
(if (not (ar-false? (ar-funcall1 _bound 'fact)))
((lambda ()
'nil
(ar-funcall1 _disp "*** redefining ")
(ar-funcall1 _disp 'fact)
(ar-funcall1 _writec #\newline)))
'nil)
(begin
(let ((| fact|
(lambda (n)
'nil
(if (not (ar-false? (ar-funcall2 _is n 0)))
1
(ar-funcall2
_*
n
(ar-funcall1 _fact (ar-funcall2 _- n 1)))))))
(namespace-set-variable-value! '_fact | fact|)
| fact|))))))
2008/02/05(火) 23:25:29
>>44
スレ違いだがストールマンは?
スレ違いだがストールマンは?
2008/02/05(火) 23:32:51
スレ違いです
2008/02/05(火) 23:33:02
&restが要らなくなったー
2008/02/05(火) 23:33:30
>>48
ストールマンは何で実装されてるの?
ストールマンは何で実装されてるの?
2008/02/05(火) 23:40:00
TECO
2008/02/05(火) 23:40:22
三角関数がないのは(xdef 'sin sin)をac.scmに追加すれはOK。
で、xdefで関数名に _ を追加して名前空間にセットしているらしい。
(sin 3.14)がコンパイルされると
(ar-funcall1 _sin 3.14)
1000行くらいなら読めるしPaul Grahamが残したらしいコメントから
彼の思考過程を探ることもできそうだ。こりゃ、面白いぜ。
で、xdefで関数名に _ を追加して名前空間にセットしているらしい。
(sin 3.14)がコンパイルされると
(ar-funcall1 _sin 3.14)
1000行くらいなら読めるしPaul Grahamが残したらしいコメントから
彼の思考過程を探ることもできそうだ。こりゃ、面白いぜ。
2008/02/06(水) 00:11:16
これ、なんでシンボルを| fact|とかにしてるの?
2008/02/06(水) 00:18:17
> '(1 . 2 . 3)
(2 1 3)
なにこれ
(2 1 3)
なにこれ
2008/02/06(水) 07:27:58
>>38
IronScheme
IronScheme
2008/02/06(水) 19:15:19
2008/02/06(水) 19:53:26
2008/02/06(水) 21:37:26
やっぱりrubyには敵わないな
2008/02/06(水) 22:17:19
そうだな。RubyはLispの方言としてはずば抜けてるからな。
2008/02/06(水) 22:34:06
S式に囚われている限りRubyには勝てないね
2008/02/06(水) 22:42:45
逆。S式に(逆向きに)囚われてるのはMatzなんだから
> S式に囚われている限りRubyは勝てないね
だよ。
> S式に囚われている限りRubyは勝てないね
だよ。
2008/02/06(水) 22:43:38
俺のarcスレで関係ない言語の話すんなよ
2008/02/06(水) 22:45:10
arcってschemeと何が違うんだよ。
単なるschemeの別バージョンならschemeスレでやれってこと。
糞スレ立てるなってこと。
単なるschemeの別バージョンならschemeスレでやれってこと。
糞スレ立てるなってこと。
2008/02/06(水) 22:47:27
すまん。おまえのスレで。
2008/02/06(水) 22:48:10
>>64
SchemeよりはむしろLispに近いと思うが
SchemeよりはむしろLispに近いと思うが
2008/02/06(水) 23:29:34
57の人には感心してしまった。
(ac s env) のssyntax? って何だろう?と首をひねっていた。
car:cdr は〜、なるほど。
cccの使い方ってそれはバックトラック?
忙しいのかね〜。出てきて教えて欲しいね〜。
(ac s env) のssyntax? って何だろう?と首をひねっていた。
car:cdr は〜、なるほど。
cccの使い方ってそれはバックトラック?
忙しいのかね〜。出てきて教えて欲しいね〜。
2008/02/07(木) 00:10:35
Lisp-2 + パッケージシステム + legacy macro = CL
Lisp-1 + hygienic macro = Scheme
Lisp-1 + legacy macro - パッケージシステム = Arc
らしい。ここの shiro さんのコメントより。
ttp://d.hatena.ne.jp/archacker/20080203/1201988205#c
Lisp-1 + hygienic macro = Scheme
Lisp-1 + legacy macro - パッケージシステム = Arc
らしい。ここの shiro さんのコメントより。
ttp://d.hatena.ne.jp/archacker/20080203/1201988205#c
2008/02/07(木) 00:18:28
>>67
57じゃないけど、このcccの使い方はいわゆる大域脱出ってやつかな。
Common Lispだとblock/return-from、他の言語だとtry/catch/throw等の
例外機構を使う。
57じゃないけど、このcccの使い方はいわゆる大域脱出ってやつかな。
Common Lispだとblock/return-from、他の言語だとtry/catch/throw等の
例外機構を使う。
2008/02/07(木) 00:34:46
2008/02/07(木) 00:38:36
>>68
「- パッケージシステム」は必要ない希ガス
「- パッケージシステム」は必要ない希ガス
2008/02/07(木) 00:43:16
つまり Arc + パッケージシステム を作れば無敵w
2008/02/07(木) 00:54:04
2008/02/07(木) 01:18:07
黒田涙目w
2008/02/07(木) 01:46:35
arc> (頭良くなれー頭良くなれー 俺)
2008/02/07(木) 11:22:18
2008/02/07(木) 13:46:02
黒田さんじゃなくても現状のArcは出来はアレだと思うだろ
バージョン0のものを叩くってのは空気の読めないアホだけだよ
バージョン0のものを叩くってのは空気の読めないアホだけだよ
2008/02/07(木) 21:39:43
trace untrace って無いみたいなのでしょうがなく
こんなことをやってみた。
arc> :a
done
> (require (lib "trace.ss"))
> (trace _fact)
(_fact)
> (tl)
Use (quit) to quit, (tl) to return here after an interrupt.
arc> (fact 10)
|(_fact 10)
| (_fact 9)
| |(_fact 8)
| | (_fact 7)
| | |(_fact 6)
| | | (_fact 5)
| | | |(_fact 4)
| | | | (_fact 3)
| | | | |(_fact 2)
| | | | | (_fact 1)
| | | |[10](_fact 0)
| | | |[10]1
省略
|3628800
3628800
arc>
もっとスマートは方法はないかな? (ar-funcall(n) ... )をいじればいいのかな。
こんなことをやってみた。
arc> :a
done
> (require (lib "trace.ss"))
> (trace _fact)
(_fact)
> (tl)
Use (quit) to quit, (tl) to return here after an interrupt.
arc> (fact 10)
|(_fact 10)
| (_fact 9)
| |(_fact 8)
| | (_fact 7)
| | |(_fact 6)
| | | (_fact 5)
| | | |(_fact 4)
| | | | (_fact 3)
| | | | |(_fact 2)
| | | | | (_fact 1)
| | | |[10](_fact 0)
| | | |[10]1
省略
|3628800
3628800
arc>
もっとスマートは方法はないかな? (ar-funcall(n) ... )をいじればいいのかな。
2008/02/08(金) 06:42:25
Arc Forumでジョークなのか$かsevalでScheme関数を呼び出すってのがあるなんてやってた。
そんなの無かったので追加してみた。
(ac s env)に加える。
((eq? (xcar s) '$) (ac-seval (cadr s)))
そして
(define (ac-seval x)
`(eval ,x))
arc> (= x "hello")
"hello"
arc> (($ string-fill!) x #\a)
#<void>
arc> x
"aaaaa"
そんなの無かったので追加してみた。
(ac s env)に加える。
((eq? (xcar s) '$) (ac-seval (cadr s)))
そして
(define (ac-seval x)
`(eval ,x))
arc> (= x "hello")
"hello"
arc> (($ string-fill!) x #\a)
#<void>
arc> x
"aaaaa"
2008/02/09(土) 03:43:45
[ ... ]っていいね。かなり記述量減らせる。
明示的に変数名も入れられるとベターなんだけど。
[< a b c > ...]みたいな
明示的に変数名も入れられるとベターなんだけど。
[< a b c > ...]みたいな
2008/02/09(土) 08:05:39
記述量減らせるけど、カッコ以外の記号覚えるの嫌だ>[]
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 ★3 [少考さん★]
- 中国軍機のレーダー照射1週間 駆け引き続く 中国、米のレッドライン模索 日本、米以外の同志国とも連携探る 米は対立から距離置く★2 [ぐれ★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★4 [Hitzeschleier★]
- 【芸能】粗品、日本テレビに苦言 客のレベルが「かなり低い。あいつら分かってない」「拍手したいだけやねん」 [冬月記者★]
- 橋下徹氏「総理なら岡田さんに何を聴かれても耐えてほしかった」 高市首相の台湾有事めぐる答弁に# [jinjin★]
- 【静岡】伊東市長選、前市議の杉本氏初当選 学歴詐称疑惑の田久保氏は及ばず 市長選3700万円、市議選6300万円の計1億円費やされる [ぐれ★]
- 【DAZN/ABEMA】ブンデスリーガ・DFBポカール★7
- 【DAZN/ABEMA】リーグ・アン総合 ★5
- 競輪実況★1629 ゲロブスクソ雑魚蛯原
- こいせん 全レス転載禁止
- ハム専
- とらせん IP付き
- 【人権と意思】琉球は「万国津梁」と呼ばれ、かつては中国の藩属国であったが、日本は武力で琉球を併合した_大学教授 [979264442]
- pixivにイラスト投稿してまだ半日経ってないのに120ブクマ超えた
- ( つ・᷄ὢ・᷅ )つだっこ
- パチンコパチスロこてんぱんにやられたら3ヶ月くらい行かなくても平気になるんだが俺は依存症じゃないの?
- プロレスラーって場外に向かって飛ぶと受け止めようとするけど
- 着々とシンギュラリティに近づいてるよな
