【普通のやつらの】 Arc Language 0 【上を行け】
- 1 :デフォルトの名無しさん:2008/02/04(月) 13:22:29
- プログラミング言語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 :デフォルトの名無しさん:2008/02/04(月) 13:25:01
- ヲタク言語
- 3 :デフォルトの名無しさん:2008/02/04(月) 14:01:07
- へーあのグレアムの。
暇が出来たらやってみよう。
- 4 :デフォルトの名無しさん: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"
- 5 :デフォルトの名無しさん: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>
- 6 :デフォルトの名無しさん:2008/02/04(月) 18:31:12
- なんか静ですね
- 7 :デフォルトの名無しさん:2008/02/04(月) 18:54:39
- これいい
arc> (trues [if (odd _) (+ _ 10)] '(1 2 3 4 5))
(11 13 15)
- 8 :デフォルトの名無しさん: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
この辺の命名規則はまだ適当みたいだな。
ソースは簡単に読めるので一度読んでみるといいかも。
- 9 :デフォルトの名無しさん:2008/02/04(月) 21:56:42
- >>8
なるほど〜。疑問解消。
ソース、読んでみるよ。
- 10 :デフォルトの名無しさん:2008/02/05(火) 00:41:19
- いまさら、こんな糞言語使わなくても、動的言語ならrubyでいいだろ。
- 11 :デフォルトの名無しさん:2008/02/05(火) 00:44:31
- 動的言語w
- 12 :デフォルトの名無しさん:2008/02/05(火) 00:46:17
- プ rubyww
- 13 :デフォルトの名無しさん:2008/02/05(火) 00:57:57
- >>10
わかりやすすぎ
- 14 :デフォルトの名無しさん:2008/02/05(火) 01:08:27
- マジな話、arcがrubyより優れている所ってあるの?
- 15 :デフォルトの名無しさん:2008/02/05(火) 01:10:11
- rubyは嫌いじゃないが、ruby使ってる人は厭な人が多いな
- 16 :デフォルトの名無しさん:2008/02/05(火) 01:10:57
- >>14
rubyを知らなくても使えるという点じゃないかな
- 17 :デフォルトの名無しさん:2008/02/05(火) 01:13:51
- まだ生まれて間もないという所が優れている
- 18 :デフォルトの名無しさん:2008/02/05(火) 01:21:10
- まだまだこれからってことだな。5年後まだ残ってたら使ってみるよ。
- 19 :デフォルトの名無しさん:2008/02/05(火) 01:27:06
- はい、さよおなら
- 20 :デフォルトの名無しさん:2008/02/05(火) 01:43:06
- >>8
あ、ごめん、やっぱり subst の引数は seq になってるから
まだ、string にしか実装されてないってことだった。
- 21 :デフォルトの名無しさん:2008/02/05(火) 01:52:50
- だれかEmacsの環境作れてるひといる?
inferior-lisp-programでArcを指定する方法はやったんだけど、
SLIME とかで使えんのかな
- 22 :デフォルトの名無しさん:2008/02/05(火) 02:14:10
- チュートリアルプレインテキストw
- 23 :デフォルトの名無しさん:2008/02/05(火) 03:06:02
- だが、それがいい
- 24 :デフォルトの名無しさん:2008/02/05(火) 07:36:38
- >>20
seq ってのは文字列とリストのことなんかね。
arc> (findsubseq '(c) '(a b c d))
2
arc> (findsubseq "c" "abcd")
2
arc>
- 25 :デフォルトの名無しさん:2008/02/05(火) 09:26:41
- >>22
ワクワクするよな
- 26 :デフォルトの名無しさん:2008/02/05(火) 17:38:15
- とりあえず階乗。
Schemeと何が違うんじゃ ってのは勘弁して。
(def fact (n)
(if (is n 0)
1
(* n (fact (- n 1)))))
- 27 :デフォルトの名無しさん:2008/02/05(火) 17:45:10
- 26向けじゃなくて、Schemeと大きく違うところって何?
- 28 :デフォルトの名無しさん:2008/02/05(火) 19:10:10
- isが同一、同値、同形判定のどれを意図してるのか判らん
- 29 :デフォルトの名無しさん:2008/02/05(火) 19:47:27
- >>27
Schemeはマクロやモジュールをどうするかで悩んでる
その結果、変な言語でマクロを記述したりR6RSでREPLがなくなったりしてる
Arcはその辺に関して楽観的というか何も考えてないっぽい
- 30 :デフォルトの名無しさん:2008/02/05(火) 19:52:01
- >>29
若くて元気で楽観的な青年 = Arc
は、そのうち何とかな〜るだろ〜お。
- 31 :デフォルトの名無しさん: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>
- 32 :デフォルトの名無しさん:2008/02/05(火) 21:47:27
- Rubyの方が断然いいね。
- 33 :デフォルトの名無しさん:2008/02/05(火) 21:56:36
- Rubyのどこがいいのか判らん
- 34 :デフォルトの名無しさん:2008/02/05(火) 21:57:50
- Pythonのほうが断然いいね
- 35 :デフォルトの名無しさん:2008/02/05(火) 22:33:16
- リアルハッカーなら断然Perlだよね
- 36 :デフォルトの名無しさん:2008/02/05(火) 22:33:45
- リアルハッカーw
- 37 :デフォルトの名無しさん:2008/02/05(火) 22:35:34
- Arcに欠けているもの、それは、、、、、
Guy L Steel兄貴の存在
- 38 :デフォルトの名無しさん:2008/02/05(火) 22:37:07
- schemeが.netに対応してVisual Studioに統合されたら最強だわ。
- 39 :デフォルトの名無しさん:2008/02/05(火) 22:39:05
- わしはコモンリスプのほうがいいのお
- 40 :デフォルトの名無しさん:2008/02/05(火) 22:39:50
- > 欠けているもの
オライリーの本
- 41 :デフォルトの名無しさん:2008/02/05(火) 22:43:03
- やれやれ、グレアム自身が実装されたArcの発表は当分先だな。
- 42 :デフォルトの名無しさん:2008/02/05(火) 22:45:01
- 彼自身が人工知能になっちまうのかい?
- 43 :デフォルトの名無しさん: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!>
>
- 44 :デフォルトの名無しさん:2008/02/05(火) 23:02:23
- 今のグレアムは既にVer.11ぐらいらしい。
- 45 :デフォルトの名無しさん:2008/02/05(火) 23:09:32
- 誰が保守してんだ
- 46 :デフォルトの名無しさん:2008/02/05(火) 23:10:08
- グレアム
- 47 :デフォルトの名無しさん: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|))))))
- 48 :デフォルトの名無しさん:2008/02/05(火) 23:25:29
- >>44
スレ違いだがストールマンは?
- 49 :デフォルトの名無しさん:2008/02/05(火) 23:32:51
- スレ違いです
- 50 :デフォルトの名無しさん:2008/02/05(火) 23:33:02
- &restが要らなくなったー
- 51 :デフォルトの名無しさん:2008/02/05(火) 23:33:30
- >>48
ストールマンは何で実装されてるの?
- 52 :デフォルトの名無しさん:2008/02/05(火) 23:40:00
- TECO
- 53 :デフォルトの名無しさん:2008/02/05(火) 23:40:22
- 三角関数がないのは(xdef 'sin sin)をac.scmに追加すれはOK。
で、xdefで関数名に _ を追加して名前空間にセットしているらしい。
(sin 3.14)がコンパイルされると
(ar-funcall1 _sin 3.14)
1000行くらいなら読めるしPaul Grahamが残したらしいコメントから
彼の思考過程を探ることもできそうだ。こりゃ、面白いぜ。
- 54 :デフォルトの名無しさん:2008/02/06(水) 00:11:16
- これ、なんでシンボルを| fact|とかにしてるの?
- 55 :デフォルトの名無しさん:2008/02/06(水) 00:18:17
- > '(1 . 2 . 3)
(2 1 3)
なにこれ
- 56 :デフォルトの名無しさん:2008/02/06(水) 07:27:58
- >>38
IronScheme
- 57 :デフォルトの名無しさん:2008/02/06(水) 19:15:19
- ラムダ計算プログラムを書いてみた
http://natal.web.fc2.com/lambda.arc.txt
- 58 :デフォルトの名無しさん:2008/02/06(水) 19:53:26
- >>57
あなた、すごい人だね。
解説、頼みます。
- 59 :デフォルトの名無しさん:2008/02/06(水) 21:37:26
- やっぱりrubyには敵わないな
- 60 :デフォルトの名無しさん:2008/02/06(水) 22:17:19
- そうだな。RubyはLispの方言としてはずば抜けてるからな。
- 61 :デフォルトの名無しさん:2008/02/06(水) 22:34:06
- S式に囚われている限りRubyには勝てないね
- 62 :デフォルトの名無しさん:2008/02/06(水) 22:42:45
- 逆。S式に(逆向きに)囚われてるのはMatzなんだから
> S式に囚われている限りRubyは勝てないね
だよ。
- 63 :デフォルトの名無しさん:2008/02/06(水) 22:43:38
- 俺のarcスレで関係ない言語の話すんなよ
- 64 :デフォルトの名無しさん:2008/02/06(水) 22:45:10
- arcってschemeと何が違うんだよ。
単なるschemeの別バージョンならschemeスレでやれってこと。
糞スレ立てるなってこと。
- 65 :デフォルトの名無しさん:2008/02/06(水) 22:47:27
- すまん。おまえのスレで。
- 66 :デフォルトの名無しさん:2008/02/06(水) 22:48:10
- >>64
SchemeよりはむしろLispに近いと思うが
- 67 :デフォルトの名無しさん:2008/02/06(水) 23:29:34
- 57の人には感心してしまった。
(ac s env) のssyntax? って何だろう?と首をひねっていた。
car:cdr は〜、なるほど。
cccの使い方ってそれはバックトラック?
忙しいのかね〜。出てきて教えて欲しいね〜。
- 68 :デフォルトの名無しさん: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
- 69 :デフォルトの名無しさん:2008/02/07(木) 00:18:28
- >>67
57じゃないけど、このcccの使い方はいわゆる大域脱出ってやつかな。
Common Lispだとblock/return-from、他の言語だとtry/catch/throw等の
例外機構を使う。
- 70 :67:2008/02/07(木) 00:22:36
- >>69
なるほど〜。
- 71 :デフォルトの名無しさん:2008/02/07(木) 00:34:46
- >>68
マクロは竹内先生の本で覚えたのでlegacy macroの方が
自分にとってはわかりやすい。
Arcの方がなんとなくLispっぽいし気楽な感じでいいかも。
- 72 :デフォルトの名無しさん:2008/02/07(木) 00:38:36
- >>68
「- パッケージシステム」は必要ない希ガス
- 73 :デフォルトの名無しさん:2008/02/07(木) 00:43:16
- つまり Arc + パッケージシステム を作れば無敵w
- 74 :デフォルトの名無しさん:2008/02/07(木) 00:54:04
- >>72
あーそうだね、そのまま引用しちゃったから気がつかなかった。
ちょっと補足。
関数と変数の名前空間に区別がないのがLisp-1で、区別があるのがLisp-2。
- 75 :デフォルトの名無しさん:2008/02/07(木) 01:18:07
- 黒田涙目w
- 76 :デフォルトの名無しさん:2008/02/07(木) 01:46:35
- arc> (頭良くなれー頭良くなれー 俺)
- 77 :デフォルトの名無しさん:2008/02/07(木) 11:22:18
- >>75
いやー、あの人は現状のArcの出来だったらボロクソに言うと思うけどww
今後Arcは開発コミュニティによってどう育って行くのか楽しみだね。
- 78 :デフォルトの名無しさん:2008/02/07(木) 13:46:02
- 黒田さんじゃなくても現状のArcは出来はアレだと思うだろ
バージョン0のものを叩くってのは空気の読めないアホだけだよ
- 79 :デフォルトの名無しさん: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) ... )をいじればいいのかな。
- 80 :デフォルトの名無しさん: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"
- 81 :デフォルトの名無しさん:2008/02/09(土) 03:43:45
- [ ... ]っていいね。かなり記述量減らせる。
明示的に変数名も入れられるとベターなんだけど。
[< a b c > ...]みたいな
- 82 :デフォルトの名無しさん:2008/02/09(土) 08:05:39
- 記述量減らせるけど、カッコ以外の記号覚えるの嫌だ>[]
- 83 :デフォルトの名無しさん:2008/02/09(土) 08:21:22
- あれあれ、'とか.とか:とか#とか`とか,とか,@とか&とかいっぱいありますよ?
[]は元々違う意味ですよ?(superbrace)
- 84 :デフォルトの名無しさん:2008/02/09(土) 08:50:36
- おれは#L()の方がいいよ
- 85 :デフォルトの名無しさん:2008/02/09(土) 09:55:53
- 覚えるのが嫌だとは思わないが、カスタマイズできない構文が増えると嫌だな
しかし fn や if の定義は変更できないほうがいい
- 86 :デフォルトの名無しさん:2008/02/09(土) 10:07:42
- shiro氏公開のポールエッセイに数学的だから長生きだ、
みたいな事書いてたけど、[]は数学的根拠はないよね。
if辺りの拡張も俺言語オナニーと発想レベルは同じ。
長生きしないでしょう。
- 87 :デフォルトの名無しさん:2008/02/09(土) 11:58:02
- 根拠がないなら作ればいい
たとえば、関数適用とラムダ抽象は全然違うんだから全然違うカッコを使うべきだとか
- 88 :デフォルトの名無しさん:2008/02/09(土) 15:15:45
- 昔は ' も無かったんだし、単なるsyntax sugarでしょ。目くじら立てるようなもんじゃない。
まあ定着するかどうかは微妙だと思うけど。
- 89 :デフォルトの名無しさん:2008/02/09(土) 22:04:44
- >>86
長生きさせる気無いんじゃない?
というか最近、彼の一流の技術者的なジョークなんじゃないかという疑いを持つようになった。
あーだこーだ言ってる俺を見てほくそ笑んでるんでは無いかと。
Ctrl-Cの人はそれに気付いてジョークで返したんでは無いかと。
そうやっていつもアイツらは俺を笑ってるんだ。クソ!
- 90 :デフォルトの名無しさん:2008/02/09(土) 22:24:53
- >>89
Paranoid schizophreniaの可能性がありますので医師に御相談ください
- 91 :デフォルトの名無しさん:2008/02/09(土) 22:29:35
- 100%ジョークってことはないが
Arcのソースにdefine-syntaxが一度たりとも出てこないのはわざとだろうなぁ
- 92 :デフォルトの名無しさん:2008/02/10(日) 10:16:44
- >>83
>[]は元々違う意味ですよ?(superbrace)
いつの時代の話してんの?w
その処理系つかったことあるの?w
- 93 :デフォルトの名無しさん:2008/02/10(日) 11:12:31
- >>92
なめんな。お前みたいな俄かLisperとは違うわ。
大した手間でもないから、わざわざ自分の
処理系には必ず入れていたぐらい精通してるよ。
後でマイナーな存在だと知ったけどな。
結局、閉じ括弧が減った程度じゃ、
一般人にLispは受け入れられないと悟った。
俺も色々変態構文は作ってきた方だが、
arcの[]みたいな使い方は思いつかなかった。
#fn <args> <expr> => (lambda <args> <expr>)
みたいな物ならいくつもあるが。
- 94 :デフォルトの名無しさん:2008/02/10(日) 11:22:21
- ニヤニヤ
- 95 :デフォルトの名無しさん:2008/02/10(日) 12:31:02
- >> 93
わりと論旨がとっちらかってて、なにが言いたいのか分からないんだけど、
でも、なんだか凄い人なのは理解できたかも!!!!!
Arcに超カッコが取り入れられる日も近い!
一般人への啓蒙のためにも[]は超カッコで、#L()を採用するべきだわ。
それか、gooみたいに(op _)とかね!まあ、cutでも良いか!
ちなみに#fn <args> <expr>って俄Lisperの漏れには
一見全然便利そうに見えないんですけど、どういうところで、
便利なんですか?!!!
どこまでが後悔関数の引数なのか分かんなくなって混乱しちゃいそうです!!
- 96 :デフォルトの名無しさん:2008/02/10(日) 13:46:05
- ニヤニヤ
- 97 :デフォルトの名無しさん:2008/02/10(日) 14:07:14
- パンチカードを使ってた頃は便利だったなあ>超カッコ
まともなエディタがあれば要らないね。w
あと [ ] を vector と解釈する処理系も無かったっけ。Interlispだっけか。
- 98 :デフォルトの名無しさん:2008/02/10(日) 14:22:41
- Emacs Lisp も (vector 'a 'b 'c) => [a b c]
- 99 :デフォルトの名無しさん:2008/02/10(日) 15:35:48
- Taoではprintで[]を再現出来るんじゃなかったっけ?
- 100 :デフォルトの名無しさん:2008/02/10(日) 16:01:42
- >>95
「わりとなんだか凄い人」なのは判ってくれたようだが、
分からないのは理解しようと努力してないからだ。
>ちなみに#fn <args> <expr>って俄Lisperの漏れには
さて、この変態構文の例を>>7のコードで示せばこうなる。
(trues #fn (_) (if (odd _) (+ _ 10)) '(1 2 3 4 5))
何が便利かはこれで判るだろ。
少なくともarcの[]の様なナンセンスな仕組みよりも、
何を意図するものか判り易い。
付け足すなら、短く書きたいという願望は判るが、
arcの[]は引数が'_'限定では述語ぐらいにしか使えないし、
'_'という名前が名前だけに、読み手に意図も伝えられない。
実際に[]が入っているコードを見たら、頭を1回転させないと
判らない難解さを感じた。
いくら短く書けてもぱっと見で意味不明なのは問題だろうよ。
lambdaをfnに変えたぐらいのセンスで、もうひと捻り欲しい。
- 101 :デフォルトの名無しさん:2008/02/10(日) 16:20:44
- かえって分かりづらいね。
センスが悪いと生きるのも大変だろうね。
- 102 :デフォルトの名無しさん:2008/02/10(日) 16:28:41
- _決め打ちだとネストできないのは困るな
- 103 :デフォルトの名無しさん:2008/02/10(日) 16:30:22
- こういう目新しい構文って、それなりに使ってみないとまともに評価できないよな
単に慣れないから不自然に見えるだけなのか、根本的に使いにくい構文なのかが一見では区別できない
- 104 :デフォルトの名無しさん:2008/02/10(日) 16:36:49
- >>100
自分の中に入りすぎていて論旨がわかりにくい。
もうちょっと行数を減らしてくれないと読むのが苦痛だ。
- 105 :デフォルトの名無しさん:2008/02/10(日) 16:42:35
- >>104
日記です。
- 106 :デフォルトの名無しさん:2008/02/10(日) 17:59:59
- 面倒だから全レスしてやるよ。
>>101 このレベルじゃ常人に理解されなくても困らないんだぜ。
>>102 ネストなんて意図を汲み取れば考慮の外だろ。
>>103 俺なら経験とカンである程度判断できる。
>>104 苦痛でも無理して読むといいよ。
>>105 いい目をしているな、それに度胸もいい。
あえて言うなら[]があればその中で'_'が使われている可能性アリ、
という対の関係を脊髄反射的に印象付けられる、変数ではなく
記号的な識別を行えるという目論見はあるだろうな。
- 107 :デフォルトの名無しさん:2008/02/10(日) 18:04:51
- 可哀想
- 108 :デフォルトの名無しさん:2008/02/10(日) 18:09:19
- さすが、普通のやつらの上を行ってるやつらの言う事は違うな
- 109 :デフォルトの名無しさん:2008/02/10(日) 18:52:51
- 上様御乱心
- 110 :デフォルトの名無しさん:2008/02/10(日) 19:07:53
- >>106
日本だと成功しないよあんた
- 111 :デフォルトの名無しさん:2008/02/10(日) 22:38:58
- まるで外国なら成功するみた(ry
- 112 :デフォルトの名無しさん:2008/02/10(日) 23:05:25
- そりゃ成功するでしょ
- 113 :デフォルトの名無しさん:2008/02/10(日) 23:16:16
- じゃあ、さっさと(ry
- 114 :デフォルトの名無しさん:2008/02/10(日) 23:56:32
- >>112
アフガニスタンとかか?
- 115 :デフォルトの名無しさん:2008/02/11(月) 07:12:51
- Arc の [] は、極端に単純な関数を極端に簡単に書くためだけの仕組みでしょ。
ちょっとでも複雑なコードが書きたいなら、普通に fn で書けばいいんだよ。
変数名とかがなくても一目でわかるくらいのコードに限定して、便利に使えればそれでいい。
別に fn を置き換えるようなものじゃないんだから。
- 116 :デフォルトの名無しさん:2008/02/11(月) 09:08:01
- C++の_1とか好きだけどな。
- 117 :デフォルトの名無しさん:2008/02/11(月) 09:28:42
- de Bruijn indexというのがあってだな
現在のスコープで最も内側で束縛された変数を 1 とする
- 118 :デフォルトの名無しさん:2008/02/11(月) 09:43:22
- de Buijn indexはlambda抽象を明示しないと成り立たないし、Boostの_1とは別物だろ
- 119 :デフォルトの名無しさん:2008/02/11(月) 09:51:32
- >> 115
そうだよね、letとwithの関係みたいなね。
引数が一つだけのlambdaが多用されるから便利に、ってことなんじゃないのかしら。
- 120 :デフォルトの名無しさん:2008/02/11(月) 09:57:17
- >>118
BoostはおいといてArcの[]を一般化しようという妄想だから
>>115
その「限定された範囲で便利に使える」機能は
普遍的な機能 (マクロなど) から導き出せるはずだっていう思想があるから
fnを置き換えるほど普遍的な機能だ
ということにすれば受け入れられやすいのではないか
- 121 :デフォルトの名無しさん:2008/02/11(月) 18:42:15
- >>117
0じゃね? まどっちでもいいんだが
- 122 :デフォルトの名無しさん:2008/02/13(水) 20:10:50
- あら、もう新しいarc1.tarが出たみたい。
x.yとか、x!yとか新しい構文が…。
- 123 :デフォルトの名無しさん:2008/02/13(水) 22:56:21
- arc> :a
> (expand-ssyntax 'x.y)
(x y)
> (expand-ssyntax 'x!y)
(x (quote y))
- 124 :デフォルトの名無しさん:2008/02/13(水) 23:36:09
- 下らない小手先の構文糖衣ばっかりだなあ
- 125 :デフォルトの名無しさん:2008/02/13(水) 23:59:48
- くだらなくない糖衣構文キボンヌ
- 126 :デフォルトの名無しさん:2008/02/14(木) 00:03:53
- type genericとか
ここらで一気に強い型な言語になろうぜ
- 127 :デフォルトの名無しさん:2008/02/14(木) 00:25:28
- (= x (table))
(= x!key 'val)
将来的には「applyメソッドをoverride」したり中置記法のマクロを書けるようになるのか?
- 128 :デフォルトの名無しさん:2008/02/14(木) 00:27:17
- うーむ。意外な方向に発展する言語だなあ。
- 129 :デフォルトの名無しさん:2008/02/14(木) 07:30:08
- なんか予想外だよね。こまいところだけ手が入ってる感じ。
- 130 :デフォルトの名無しさん:2008/02/14(木) 14:31:03
- なんかarc1の説明にcutが沢山でてくると思ったらsubseqから名前変わったのね。
他にも変更になったのあるのかしらん。
- 131 :デフォルトの名無しさん:2008/02/21(木) 01:23:29
- 保守
- 132 :デフォルトの名無しさん:2008/02/25(月) 17:37:51
- ・ポール・グレアム「新しいものを作る6つの原則」 - らいおんの隠れ家
http://d.hatena.ne.jp/lionfan/20080224
・Arcをリリースした - 武蔵の日記
http://d.hatena.ne.jp/sirocco634/20080130/
・ポール・グレアム「Arc公開」を翻訳しかけたのですが - らいおんの隠れ家
http://d.hatena.ne.jp/lionfan/20080225
- 133 :デフォルトの名無しさん:2008/03/01(土) 00:38:24
- てめぇらの意見が聞きたい
型やマクロに制約のある言語を使ってると
その制約と相性の悪い新機能を使うために新しい言語に移行するパターンが多くないか?
制約のある言語はいつか破綻するものと割り切って使うしかないのか?
- 134 :デフォルトの名無しさん:2008/03/01(土) 02:02:36
- なんか抽象的な質問だなあ
- 135 :デフォルトの名無しさん:2008/03/01(土) 03:54:09
- そうかもしれん
ポールグレアムは「高級言語はプログラムを短くするためにある」と言った
でも普通のやつらは新しい機能を使うために新しい言語を使うんじゃないか
そこには、新しい機能を古い言語で実現できないという前提がある
Arcが期待はずれだった人も、
プログラムを短くすることではなく、新しい機能を期待していたのだと思う
だがポールグレアム的には、古い言語で実現できない新しい機能など存在しない
できないのは言語に色んな制約をつけた奴が悪い
で、静的型やhygienic macroのある言語って何なの?って話
- 136 :デフォルトの名無しさん:2008/03/01(土) 04:00:17
- Cを始めてみた時、ここまで記号羅列で表記する意味はあるのか、
いやないんじゃないかと思った。今では慣れた。endすらうざい。
- 137 :デフォルトの名無しさん:2008/03/01(土) 04:02:05
- Cにendなんてないわけだけど。
Rubyのことを言ってるならあれはEmacsから一発でインデントと共に
入れるもの。
- 138 :デフォルトの名無しさん:2008/03/01(土) 08:04:09
- 括弧が記号じゃないとエディタで対応とらせるのに不便よね。
インデントだけじゃなくて移動とか。
PostScriptみたいに[,]が実はオペレータってのも勘弁だが。
- 139 :デフォルトの名無しさん:2008/03/01(土) 08:21:11
- ,はunquoteじゃないの?
- 140 :デフォルトの名無しさん:2008/03/01(土) 10:20:11
- >>137
inputが面倒という以外に、視覚的に鬱陶しいというのもあるのでは?
- 141 :デフォルトの名無しさん:2008/03/01(土) 23:27:59
- >>140
Lispの括弧と同じで慣れれば見えなくなるけどね
- 142 :デフォルトの名無しさん:2008/03/02(日) 14:13:23
- レンタルサーバ上で Arc によってウェブアプリを書いている人いますか?
Arcで書かれたポールグレアムの News.YC がオープンソース化
http://d.hatena.ne.jp/higepon/20080225/1203913944
- 143 :デフォルトの名無しさん:2008/03/02(日) 14:15:13
- Arcからの挑戦
http://practical-scheme.net/wiliki/wiliki.cgi?Arc%E3%81%8B%E3%82%89%E3%81%AE%E6%8C%91%E6%88%A6
- 144 :デフォルトの名無しさん:2008/03/02(日) 14:17:36
- Arcからの挑戦
http://practical-scheme.net/wiliki/wiliki.cgi?Arc%E3%81%8B%E3%82%89%E3%81%AE%E6%8C%91%E6%88%A6
単純な問題を、挑戦として示すことにしよう。
そして、ポピュラーな言語での解答を集めて、その長さを比べてみるつもりだ。
次のようなプログラムを書け。
URL said (例えば http://localhost:port/said )は、入力フィールドひとつと、送信ボタンひとつのページを生成する。
送信ボタンが押されたら、2番めのページとして、"click here." と書かれたリンクひとつのページを生成する。
それがクリックされたら、3番めのページとして、"you said: ..." と書かれたページにいく。
ここで ... は、さっきの入力フィールドにユーザがタイプしたものだ。
ただし、3番めのページは、ユーザが実際にタイプしたものだけを表示すること。
つまり、入力フィールドの値を URL で渡してはいけない。そうしないと、最後のページの動作をURLで変えるようなことができてしまう。
単純だし、このようなテストに求められるように、これは例として不自然ではない。
Webアプリは、このようなことをいつもやっているのだ。あるいは、何か難解なライブラリ(Arcにあって他の言語にはないような)に頼るわけでもない。Webアプリを書くのに使われる言語なら当然もっているものだけでいい。
これが Arc の答えだ:
(defop said req
(aform [w/link (pr "you said: " (arg _ "foo"))
(pr "click here")]
(input "foo")
(submit)))
もし Arc になじみがなければ、私のいうことを信じてもらうほかないが、これはコード上のトリックで圧縮したわけではない。
これが Arc で書くには標準的な書きかたなのだ。
- 145 :デフォルトの名無しさん:2008/03/02(日) 15:51:22
- Arcで書かれたポールグレアムとlispで書かれたポールグレアムはどっちが強いんだろう
- 146 :デフォルトの名無しさん:2008/03/02(日) 16:20:28
- 詠唱速度というのがあってだな
- 147 :デフォルトの名無しさん:2008/03/02(日) 19:14:13
- >>144
http://practical-scheme.net/wiliki/wiliki.cgi?cut-sea#H-1119bvv
>(define-page (said)
> (self-chain "self"
> (form/cont/ (entry-lambda (:keyword say)
> (a/cont/ (cut p/ "You say:" say) "click here"))
> (readln/ say)
> (submit/))))
>
>Arc: 23ノード:15の葉/字句 + 8内部ノード
>Kahua: 27ノード:17の葉/字句 + 10内部ノード
- 148 :デフォルトの名無しさん:2008/03/06(木) 17:09:30
- 野良犬日記 2.1 ? Going to the Mutts
- Paul Graham のエッセイは翻訳が許可されている
http://tamo.tdiary.net/20080304.html#p01
> たとえば cond マクロ。こいつには Lisp 1 からこのかた余計な括弧がびっ
> しり付いてきて、それを誰も何ともしてこなかった。 if と cond を押しつ
> ぶしてひとつのオペレータにする Arc の技も、誰かがとっくに見つけてい
> たっておかしくなかったのだが、 間違いなくそんな周知の事実はない。こ
> んなことができると気づいたときは嬉しかったなあ。
これって何の話?誰か教えてプリーズ。
- 149 :デフォルトの名無しさん:2008/03/06(木) 17:18:00
- ↑http://practical-scheme.net/wiliki/arcxref?if
- 150 :デフォルトの名無しさん:2008/03/06(木) 18:00:43
- ありがとう。
if の引数が偶数個のときは、else節が無いということかな。
- 151 :デフォルトの名無しさん:2008/03/06(木) 20:42:11
- この if ほんとに便利なのかなぁ
- 152 :デフォルトの名無しさん:2008/03/06(木) 21:12:25
- cond のほうが見やすく思えるのは、体に染みついてるからだけはないと思う
- 153 :デフォルトの名無しさん:2008/03/06(木) 23:16:16
- cond の括弧が「余計」だとは思わない。
要素の数を数えるより、括弧の対応だけ追うほうが楽だし。
ただ、 Arc の if のが書きやすいかもしれないとは思う。
- 154 :デフォルトの名無しさん:2008/03/06(木) 23:20:28
- インデントで見やすくすればいいだけ
- 155 :デフォルトの名無しさん:2008/03/06(木) 23:31:54
- ifもそうだけど、思ったよりwithも使い勝手悪い気がするんだよね。
letは良いんだけど。
>>154
インデントで見やすくする、っていう発想/行為自体が、括弧を減らすことで、
見やすさが向上してないってことじゃなかろうかww
まあ、もっと高尚な目的のために括弧を減らしたんだろうけどね。
- 156 :デフォルトの名無しさん:2008/03/08(土) 02:20:13
- ifとcond2つ要らないことが重要なり〜
- 157 :デフォルトの名無しさん:2008/03/08(土) 02:43:38
- そのりくつはおかしい
- 158 :デフォルトの名無しさん:2008/03/08(土) 02:49:43
- when や unless の立場はw
- 159 :デフォルトの名無しさん:2008/03/08(土) 03:01:00
- カッコが余分にないと暗黙のprognにしにくい。> if
- 160 :デフォルトの名無しさん:2008/03/08(土) 03:31:47
- condだけでもいいよ
- 161 :デフォルトの名無しさん:2008/03/08(土) 03:33:58
- どれか一つだけ残すなら cond だな
- 162 :デフォルトの名無しさん:2008/03/08(土) 04:13:23
- ところでprognってなんて読むの?
俺は心の中では「ぷろぐなぁー」。人前では発音したことない。l
- 163 :デフォルトの名無しさん:2008/03/08(土) 08:40:29
- おれの心の中では「プログン」だなぁ
- 164 :デフォルトの名無しさん:2008/03/08(土) 09:02:03
- 俺は「プロオン」だな。「オ」のところは喉をすぼめて。
人前で読むなら「プログエヌ」だろうか。
- 165 :デフォルトの名無しさん:2008/03/08(土) 11:30:46
- 俺も人前なら「プログ・エヌ」
人前でなければ発音しないw
- 166 :デフォルトの名無しさん:2008/03/08(土) 12:09:27
- 同じような構文糖がゴチャゴチャあると余計わかりにくい。
- 167 :デフォルトの名無しさん:2008/03/08(土) 12:22:24
- 実際ifのtrue節やfalse節でよくdoしてるよな。
letな局面も多くて、いつもしているわけじゃないけど。
あと、elseifが連なる時、どれが条件だか分かりにくいわ。
今のインデントルールだと全部同じ高さだから。
まあこんなのはどうでもいいところだけど。
- 168 :デフォルトの名無しさん:2008/03/09(日) 05:07:57
- prog1(プログワン)があるんだからプログエヌ
- 169 :デフォルトの名無しさん:2008/03/09(日) 11:43:01
- コンマ
- 170 :デフォルトの名無しさん:2008/03/11(火) 17:25:49
- で、このアークってのは今までのLispの方言に比べて何か画期的な
機能とかあるの?
- 171 :デフォルトの名無しさん:2008/03/11(火) 17:30:42
- 何か画期的な機能がある方言のほうが珍しいからなあ。無いんじゃないかなあ。
- 172 :デフォルトの名無しさん:2008/03/14(金) 14:41:10
- 文字列処理が変態的と聞いたが、使ってみた人、どうよ
- 173 :デフォルトの名無しさん:2008/03/18(火) 12:42:00
- 俺LISP作るような人から見たら大した事してないよ
マクロでこんなん作りましたレベル
- 174 :デフォルトの名無しさん:2008/03/18(火) 22:05:25
- 逆に画期的な方言が知りたい。
- 175 :デフォルトの名無しさん:2008/03/18(火) 22:12:10
- 萩谷(昌己)さんが学生のとき作ったHyperlispなんて変態的で画期的だったな。
もはやLispではないかもしれんが。
- 176 :デフォルトの名無しさん:2008/03/19(水) 00:34:08
- どう画期的なのか、概略だけでも書いてくれると、
もうちょっとは盛り上がります罠。
- 177 :デフォルトの名無しさん:2008/03/19(水) 00:43:37
- ググれば論文出てくるよ。
ファースト・オーサーは佐藤さん。
二分木を基底にした数学的意味を持つLisp。
- 178 :デフォルトの名無しさん:2008/03/19(水) 02:03:33
- Arcは「シンボルの構造化」とか言えば画期的に聞こえないこともないと思う
- 179 :デフォルトの名無しさん:2008/03/19(水) 21:51:23
- >>175
今の感覚からみるとHyperってのが時代を感じるね。
- 180 :デフォルトの名無しさん:2008/03/19(水) 22:43:41
- HTML侮辱STOP! (AA略
- 181 :デフォルトの名無しさん:2008/03/20(木) 00:14:10
- 時代を感じるってのは侮辱なのか?
日本語でおk
- 182 :デフォルトの名無しさん:2008/03/20(木) 00:24:32
- ハイパーカードのことも、ときどきは思い出してあげてください
- 183 :デフォルトの名無しさん:2008/03/20(木) 00:46:12
- HyperTalkもあったね。
- 184 :デフォルトの名無しさん:2008/03/20(木) 10:33:55
- HyperCardをArcで実装してくれ
- 185 :デフォルトの名無しさん:2008/03/20(木) 22:12:58
- じゃあ、俺は、ハイパーオリンピック
鉄の定規は、使用禁(ry
- 186 :デフォルトの名無しさん:2008/03/20(木) 22:13:19
- なつかしすぐるwwwww
- 187 :デフォルトの名無しさん:2008/03/20(木) 23:49:46
- あれのせいで全国的にコントローラが傷だらけになった罠w
- 188 :デフォルトの名無しさん:2008/03/20(木) 23:52:01
- HyperLibってあったな。
- 189 :デフォルトの名無しさん:2008/03/20(木) 23:52:45
- HyperText⇒HTML
- 190 :デフォルトの名無しさん:2008/03/20(木) 23:56:16
- >>189
>>180へ無限再帰
- 191 :デフォルトの名無しさん:2008/03/20(木) 23:56:21
- ハイパーターミナル
- 192 :デフォルトの名無しさん:2008/03/20(木) 23:57:49
- ハイパーリンク
- 193 :デフォルトの名無しさん:2008/03/20(木) 23:58:34
- CR ハイパー海物語INカリブ
- 194 :デフォルトの名無しさん:2008/03/21(金) 09:01:28
- >>188 super.lib じゃなくて?
- 195 :デフォルトの名無しさん:2008/03/21(金) 22:39:21
- >>194
ハイパーカードのスタックに特化した季刊誌があったような希ガス。
- 196 :デフォルトの名無しさん:2008/04/06(日) 16:46:18
- 一ヶ月に一回位のペースで新バージョンがリリースされるのかと思ったら、ペース落ちてきたね。
- 197 :デフォルトの名無しさん:2008/04/08(火) 00:01:02
- 正直、現状の肉でも魚でもないものじゃ更新ペースが速くても興味がわかない。
もう少しまとまった形になってから出してくれた方がいい。
- 198 :デフォルトの名無しさん:2008/04/08(火) 03:57:31
- >>197
どのあたりから肉とか魚になるのさw
- 199 :デフォルトの名無しさん:2008/04/08(火) 23:20:13
- Rubyになった時だろ。
- 200 :デフォルトの名無しさん:2008/04/09(水) 00:20:32
- Σ(´д` ).
- 201 :デフォルトの名無しさん:2008/04/10(木) 23:24:33
- 相互再帰たらいまわし
(= Y* ([_ _]
[fn fs (fn (f) (fn xs (apply (apply f (map (apply (_ _) fs) fs)) xs)))]))
(= tarai
((fn (f g) ((Y* f g) f))
(fn (f g)
(fn (x y z)
(if (<= x y) y
(g (f (- x 1) y z)
(f (- y 1) z x)
(- z 1) x y))))
(fn (f g)
(fn (x y zx zy zz)
(if (<= x y) y
(let z (f zx zy zz)
(f x y z)))))))
- 202 :デフォルトの名無しさん:2008/04/22(火) 20:44:47
- 直接貼ると見づらいが、リンクするのも微妙だし、なんとかならんのか
- 203 :デフォルトの名無しさん:2008/04/22(火) 22:14:44
- >>201
どうなってるんだソレ
- 204 :デフォルトの名無しさん:2008/04/22(火) 23:05:29
- ふつうの定義。超遅い。竹内関数とも呼ばれる。
(= tarai
(fn (x y z)
(if (<= x y)
y
(tarai
(tarai (- x 1) y z)
(tarai (- y 1) z x)
(tarai (- z 1) x y)))))
#これコピペすると が鬱陶しい
Y*は2変数ならこうなる
((Y* f g) h) => (h ((Y* f g) f) ((Y* f g) g))
- 205 :デフォルトの名無しさん:2008/04/23(水) 20:04:10
- >>201を(´д`)Editで観易くするテスト
(= Y* ([_ _]
[fn fs (fn (f) (fn xs (apply (apply f (map (apply (_ _) fs) fs)) xs)))]))
(= tarai
((fn (f g) ((Y* f g) f))
(fn (f g)
(fn (x y z)
(if (<= x y) y
(g (f (- x 1) y z)
(f (- y 1) z x)
(- z 1) x y))))
(fn (f g)
(fn (x y zx zy zz)
(if (<= x y) y
(let z (f zx zy zz)
(f x y z)))))))
- 206 :デフォルトの名無しさん:2008/05/03(土) 16:38:21
- スターリスプみたいにさ、デフォルトで並列対応とかしてれば人気出るのに。
- 207 :デフォルトの名無しさん:2008/05/03(土) 18:23:24
- >>206
まだ表面的な部分しか公開されていないが実はそうなんジャマイカ?
- 208 :デフォルトの名無しさん:2008/05/09(金) 00:02:32
- 並列どころか平行なんジャマイカJK。
- 209 :デフォルトの名無しさん:2008/05/09(金) 06:50:39
- ジャマイカとか言う前にちゃんと調べてから書け
- 210 :デフォルトの名無しさん:2008/05/09(金) 07:02:55
- 調べてみた
http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A3%E3%83%9E%E3%82%A4%E3%82%AB
- 211 :デフォルトの名無しさん:2008/05/09(金) 20:32:07
- >>210
そのリンクは『ジャマイカ』ジャマイカw
- 212 :デフォルトの名無しさん:2008/06/08(日) 01:13:48
- またLispの方言できたの?
- 213 :デフォルトの名無しさん:2008/06/08(日) 01:48:21
- 使用者ごとに23の方言があると言われているのがLisp
- 214 :デフォルトの名無しさん:2008/06/08(日) 01:55:40
- schemeとCLに比べて、何が凄いの?
- 215 :デフォルトの名無しさん:2008/06/08(日) 03:04:40
- 作った人が凄い
- 216 :デフォルトの名無しさん:2008/06/08(日) 03:59:29
- アーク ザ ラングエッジ
- 217 :デフォルトの名無しさん:2008/06/11(水) 13:40:39
- …インテリジェントパイプ?違うか。
42 KB
[ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
取りに行ったけどなかった。次は一時間後に取りに行くです。新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.0.7.8 2008/09/25 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)