1read 100read
【普通のやつらの】 Arc Language 0 【上を行け】 (260)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
データ構造,アルゴリズム,デザインパターン総合スレ 2 (109)
プログラミングを勉強したいのだが (141)
【漏れは】猫でもわかる質問スレ【猫以下です】 (496)
【超高速】C/C++に代わる低級言語を開発したい 8 (117)
MSX-BASICの奥義を伝授するスレ (782)
静的型付け言語の潜在開発生産性は今の100倍 ×3 (561)
【普通のやつらの】 Arc Language 0 【上を行け】
- 1 :2008/02/04 〜 最終レス :2013/10/21
- プログラミング言語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
- 2 :
- ヲタク言語
- 3 :
- へーあのグレアムの。
暇が出来たらやってみよう。
- 4 :
- 文字列を内部的にはリストにしてるんかいなぁ?
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"
- 5 :
- 慣れるとわりといいかも
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>
- 6 :
- なんか静ですね
- 7 :
- これいい
arc> (trues [if (odd _) (+ _ 10)] '(1 2 3 4 5))
(11 13 15)
- 8 :
- >>4
subst は substring の略っぽい。
http://practical-scheme.net/wiliki/arcxref?subst
List に対する subst(itute) は tree-subst という関数がある。
http://practical-scheme.net/wiliki/arcxref?tree-subst
この辺の命名規則はまだ適当みたいだな。
ソースは簡単に読めるので一度読んでみるといいかも。
- 9 :
- >>8
なるほど〜。疑問解消。
ソース、読んでみるよ。
- 10 :
- いまさら、こんな糞言語使わなくても、動的言語ならrubyでいいだろ。
- 11 :
- 動的言語w
- 12 :
- プ rubyww
- 13 :
- >>10
わかりやすすぎ
- 14 :
- マジな話、arcがrubyより優れている所ってあるの?
- 15 :
- rubyは嫌いじゃないが、ruby使ってる人は厭な人が多いな
- 16 :
- >>14
rubyを知らなくても使えるという点じゃないかな
- 17 :
- まだ生まれて間もないという所が優れている
- 18 :
- まだまだこれからってことだな。5年後まだ残ってたら使ってみるよ。
- 19 :
- はい、さよおなら
- 20 :
- >>8
あ、ごめん、やっぱり subst の引数は seq になってるから
まだ、string にしか実装されてないってことだった。
- 21 :
- だれかEmacsの環境作れてるひといる?
inferior-lisp-programでArcを指定する方法はやったんだけど、
SLIME とかで使えんのかな
- 22 :
- チュートリアルプレインテキストw
- 23 :
- だが、それがいい
- 24 :
- >>20
seq ってのは文字列とリストのことなんかね。
arc> (findsubseq '(c) '(a b c d))
2
arc> (findsubseq "c" "abcd")
2
arc>
- 25 :
- >>22
ワクワクするよな
- 26 :
- とりあえず階乗。
Schemeと何が違うんじゃ ってのは勘弁して。
(def fact (n)
(if (is n 0)
1
(* n (fact (- n 1)))))
- 27 :
- 26向けじゃなくて、Schemeと大きく違うところって何?
- 28 :
- isが同一、同値、同形判定のどれを意図してるのか判らん
- 29 :
- >>27
Schemeはマクロやモジュールをどうするかで悩んでる
その結果、変な言語でマクロを記述したりR6RSでREPLがなくなったりしてる
Arcはその辺に関して楽観的というか何も考えてないっぽい
- 30 :
- >>29
若くて元気で楽観的な青年 = Arc
は、そのうち何とかな〜るだろ〜お。
- 31 :
- 試してみた。
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>
- 32 :
- Rubyの方が断然いいね。
- 33 :
- Rubyのどこがいいのか判らん
- 34 :
- Pythonのほうが断然いいね
- 35 :
- リアルハッカーなら断然Perlだよね
- 36 :
- リアルハッカーw
- 37 :
- Arcに欠けているもの、それは、、、、、
Guy L Steel兄貴の存在
- 38 :
- schemeが.netに対応してVisual Studioに統合されたら最強だわ。
- 39 :
- わしはコモンリスプのほうがいいのお
- 40 :
- > 欠けているもの
オライリーの本
- 41 :
- やれやれ、グレアム自身が実装されたArcの発表は当分先だな。
- 42 :
- 彼自身が人工知能になっちまうのかい?
- 43 :
- 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!>
>
- 44 :
- 今のグレアムは既にVer.11ぐらいらしい。
- 45 :
- 誰が保守してんだ
- 46 :
- グレアム
- 47 :
- :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|))))))
- 48 :
- >>44
スレ違いだがストールマンは?
- 49 :
- スレ違いです
- 50 :
- &restが要らなくなったー
- 51 :
- >>48
ストールマンは何で実装されてるの?
- 52 :
- TECO
- 53 :
- 三角関数がないのは(xdef 'sin sin)をac.scmに追加すれはOK。
で、xdefで関数名に _ を追加して名前空間にセットしているらしい。
(sin 3.14)がコンパイルされると
(ar-funcall1 _sin 3.14)
1000行くらいなら読めるしPaul Grahamが残したらしいコメントから
彼の思考過程を探ることもできそうだ。こりゃ、面白いぜ。
- 54 :
- これ、なんでシンボルを| fact|とかにしてるの?
- 55 :
- > '(1 . 2 . 3)
(2 1 3)
なにこれ
- 56 :
- >>38
IronScheme
- 57 :
- ラムダ計算プログラムを書いてみた
http://natal.web.fc2.com/lambda.arc.txt
- 58 :
- >>57
あなた、すごい人だね。
解説、頼みます。
- 59 :
- やっぱりrubyには敵わないな
- 60 :
- そうだな。RubyはLispの方言としてはずば抜けてるからな。
- 61 :
- S式に囚われている限りRubyには勝てないね
- 62 :
- 逆。S式に(逆向きに)囚われてるのはMatzなんだから
> S式に囚われている限りRubyは勝てないね
だよ。
- 63 :
- 俺のarcスレで関係ない言語の話すんなよ
- 64 :
- arcってschemeと何が違うんだよ。
単なるschemeの別バージョンならschemeスレでやれってこと。
糞スレ立てるなってこと。
- 65 :
- すまん。おまえのスレで。
- 66 :
- >>64
SchemeよりはむしろLispに近いと思うが
- 67 :
- 57の人には感心してしまった。
(ac s env) のssyntax? って何だろう?と首をひねっていた。
car:cdr は〜、なるほど。
cccの使い方ってそれはバックトラック?
忙しいのかね〜。出てきて教えて欲しいね〜。
- 68 :
- 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
- 69 :
- >>67
57じゃないけど、このcccの使い方はいわゆる大域脱出ってやつかな。
Common Lispだとblock/return-from、他の言語だとtry/catch/throw等の
例外機構を使う。
- 70 :
- >>69
なるほど〜。
- 71 :
- >>68
マクロは竹内先生の本で覚えたのでlegacy macroの方が
自分にとってはわかりやすい。
Arcの方がなんとなくLispっぽいし気楽な感じでいいかも。
- 72 :
- >>68
「- パッケージシステム」は必要ない希ガス
- 73 :
- つまり Arc + パッケージシステム を作れば無敵w
- 74 :
- >>72
あーそうだね、そのまま引用しちゃったから気がつかなかった。
ちょっと補足。
関数と変数の名前空間に区別がないのがLisp-1で、区別があるのがLisp-2。
- 75 :
- 黒田涙目w
- 76 :
- arc> (頭良くなれー頭良くなれー 俺)
- 77 :
- >>75
いやー、あの人は現状のArcの出来だったらボロクソに言うと思うけどww
今後Arcは開発コミュニティによってどう育って行くのか楽しみだね。
- 78 :
- 黒田さんじゃなくても現状のArcは出来はアレだと思うだろ
バージョン0のものを叩くってのは空気の読めないアホだけだよ
- 79 :
- 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) ... )をいじればいいのかな。
- 80 :
- 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"
- 81 :
- [ ... ]っていいね。かなり記述量減らせる。
明示的に変数名も入れられるとベターなんだけど。
[< a b c > ...]みたいな
- 82 :
- 記述量減らせるけど、カッコ以外の記号覚えるの嫌だ>[]
- 83 :
- あれあれ、'とか.とか:とか#とか`とか,とか,@とか&とかいっぱいありますよ?
[]は元々違う意味ですよ?(superbrace)
- 84 :
- おれは#L()の方がいいよ
- 85 :
- 覚えるのが嫌だとは思わないが、カスタマイズできない構文が増えると嫌だな
しかし fn や if の定義は変更できないほうがいい
- 86 :
- shiro氏公開のポールエッセイに数学的だから長生きだ、
みたいな事書いてたけど、[]は数学的根拠はないよね。
if辺りの拡張も俺言語Rーと発想レベルは同じ。
長生きしないでしょう。
- 87 :
- 根拠がないなら作ればいい
たとえば、関数適用とラムダ抽象は全然違うんだから全然違うカッコを使うべきだとか
- 88 :
- 昔は ' も無かったんだし、単なるsyntax sugarでしょ。目くじら立てるようなもんじゃない。
まあ定着するかどうかは微妙だと思うけど。
- 89 :
- >>86
長生きさせる気無いんじゃない?
というか最近、彼の一流の技術者的なジョークなんじゃないかという疑いを持つようになった。
あーだこーだ言ってる俺を見てほくそ笑んでるんでは無いかと。
Ctrl-Cの人はそれに気付いてジョークで返したんでは無いかと。
そうやっていつもアイツらは俺を笑ってるんだ。クソ!
- 90 :
- >>89
Paranoid schizophreniaの可能性がありますので医師に御相談ください
- 91 :
- 100%ジョークってことはないが
Arcのソースにdefine-syntaxが一度たりとも出てこないのはわざとだろうなぁ
- 92 :
- >>83
>[]は元々違う意味ですよ?(superbrace)
いつの時代の話してんの?w
その処理系つかったことあるの?w
- 93 :
- >>92
なめんな。お前みたいな俄かLisperとは違うわ。
大した手間でもないから、わざわざ自分の
処理系には必ず入れていたぐらい精通してるよ。
後でマイナーな存在だと知ったけどな。
結局、閉じ括弧が減った程度じゃ、
一般人にLispは受け入れられないと悟った。
俺も色々変態構文は作ってきた方だが、
arcの[]みたいな使い方は思いつかなかった。
#fn <args> <expr> => (lambda <args> <expr>)
みたいな物ならいくつもあるが。
- 94 :
- ニヤニヤ
- 95 :
- >> 93
わりと論旨がとっちらかってて、なにが言いたいのか分からないんだけど、
でも、なんだか凄い人なのは理解できたかも!!!!!
Arcに超カッコが取り入れられる日も近い!
一般人への啓蒙のためにも[]は超カッコで、#L()を採用するべきだわ。
それか、gooみたいに(op _)とかね!まあ、cutでも良いか!
ちなみに#fn <args> <expr>って俄Lisperの漏れには
一見全然便利そうに見えないんですけど、どういうところで、
便利なんですか?!!!
どこまでが後悔関数の引数なのか分かんなくなって混乱しちゃいそうです!!
- 96 :
- ニヤニヤ
- 97 :
- パンチカードを使ってた頃は便利だったなあ>超カッコ
まともなエディタがあれば要らないね。w
あと [ ] を vector と解釈する処理系も無かったっけ。Interlispだっけか。
- 98 :
- Emacs Lisp も (vector 'a 'b 'c) => [a b c]
- 99 :
- Taoではprintで[]を再現出来るんじゃなかったっけ?
- 100read 1read
- 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
【上流社会】MSDNサブスクリプション総合【最先端】 (652)
【関数】Erlang Part 2【エリクソン】 (209)
【JavaScript】スクリプト バトルロワイヤル40【pl,rb,php,py】 (801)
音声合成プログラムを作りる (326)
OpenGLスレ Part20 (122)
C++相談室 part105 (888)
--log9.info------------------
【ロレックス】機械式 日差±報告【セイコー5】 (114)
【韓流】 セイコーはアウトオブ眼中 【ナウイ】 (453)
【ROLEX】 サブマリーナデイト 42【ロレックス】 (213)
【荒らしは】俺、パチでいいや 129本目【スルー】 (938)
【最強】ロレックスの中で最強を決めよう4【ROLEX】 (129)
祝!復活■Vintage Rolex■Part8 (550)
所有している時計をうpして自慢するスレ★18 (860)
【秒針機械式】FOSSIL【時分針クオーツ】 (315)
持ってたら恥ずかしい時計 (157)
【機械式】グランドセイコーを語る73【GS】 (417)
【角松敏生】エバンスってどうよ?2【濱田】 (216)
【フォーマル】革財布 vol.32【カジュアル】 (595)
【角松敏生】グラスヒュッテ・オリジナル2【濱田】 (329)
歴史】ロレックスvsパテック どっちがすごい?【品質 (957)
★☆時計板の初心者総合質問スレッド Part66★ (961)
【一見さん】時計購入相談Part.74【大歓迎】 (527)
--log55.com------------------
【バーチャルYoutuber】にじさんじ有ンチスレ14337【帰国子女応援スレ】
【かっさん】加藤純一ID無しスレpart3134【芋畜生】
【バーチャル】hololiveアンチスレ#2533【youtuber】
【バーチャルYoutuber】にじさんじ有ンチスレ14338【ロキ応援スレ】
【バーチャルYoutuber】にじさんじ有ンチスレ14338【緑嫌われ】
【バーチャルYouTuber】.LIVEアイドル部アンチスレ#9369【アップランド】
【バーチャルYouTuber】.LIVEアイドル部アンチスレ#9369【アップランド】
【バーチャルYoutuber】にじさんじ有ンチスレ14339【早く寝ないとハゲるぞ】
-