【普通のやつらの】 Arc Language 0 【上を行け】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/02/04(月) 13:22:29あの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
0002デフォルトの名無しさん
2008/02/04(月) 13:25:010003デフォルトの名無しさん
2008/02/04(月) 14:01:07暇が出来たらやってみよう。
0004デフォルトの名無しさん
2008/02/04(月) 18:18:13arc> (subst 'a '(b) '(a b c))
"aac"
arc> (+ '(a b c) '(d e f))
(a b c d e f)
arc> (+ "abc" "def")
"abcdef"
0005デフォルトの名無しさん
2008/02/04(月) 18:24:27arc> (= 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>
0006デフォルトの名無しさん
2008/02/04(月) 18:31:120007デフォルトの名無しさん
2008/02/04(月) 18:54:39arc> (trues [if (odd _) (+ _ 10)] '(1 2 3 4 5))
(11 13 15)
0008デフォルトの名無しさん
2008/02/04(月) 20:52:02subst は substring の略っぽい。
http://practical-scheme.net/wiliki/arcxref?subst
List に対する subst(itute) は tree-subst という関数がある。
http://practical-scheme.net/wiliki/arcxref?tree-subst
この辺の命名規則はまだ適当みたいだな。
ソースは簡単に読めるので一度読んでみるといいかも。
0009デフォルトの名無しさん
2008/02/04(月) 21:56:42なるほど〜。疑問解消。
ソース、読んでみるよ。
0010デフォルトの名無しさん
2008/02/05(火) 00:41:190011デフォルトの名無しさん
2008/02/05(火) 00:44:310012デフォルトの名無しさん
2008/02/05(火) 00:46:170013デフォルトの名無しさん
2008/02/05(火) 00:57:57わかりやすすぎ
0014デフォルトの名無しさん
2008/02/05(火) 01:08:270015デフォルトの名無しさん
2008/02/05(火) 01:10:110016デフォルトの名無しさん
2008/02/05(火) 01:10:57rubyを知らなくても使えるという点じゃないかな
0017デフォルトの名無しさん
2008/02/05(火) 01:13:510018デフォルトの名無しさん
2008/02/05(火) 01:21:100019デフォルトの名無しさん
2008/02/05(火) 01:27:060020デフォルトの名無しさん
2008/02/05(火) 01:43:06あ、ごめん、やっぱり subst の引数は seq になってるから
まだ、string にしか実装されてないってことだった。
0021デフォルトの名無しさん
2008/02/05(火) 01:52:50inferior-lisp-programでArcを指定する方法はやったんだけど、
SLIME とかで使えんのかな
0022デフォルトの名無しさん
2008/02/05(火) 02:14:100023デフォルトの名無しさん
2008/02/05(火) 03:06:020024デフォルトの名無しさん
2008/02/05(火) 07:36:38seq ってのは文字列とリストのことなんかね。
arc> (findsubseq '(c) '(a b c d))
2
arc> (findsubseq "c" "abcd")
2
arc>
0025デフォルトの名無しさん
2008/02/05(火) 09:26:41ワクワクするよな
0026デフォルトの名無しさん
2008/02/05(火) 17:38:15Schemeと何が違うんじゃ ってのは勘弁して。
(def fact (n)
(if (is n 0)
1
(* n (fact (- n 1)))))
0027デフォルトの名無しさん
2008/02/05(火) 17:45:100028デフォルトの名無しさん
2008/02/05(火) 19:10:100029デフォルトの名無しさん
2008/02/05(火) 19:47:27Schemeはマクロやモジュールをどうするかで悩んでる
その結果、変な言語でマクロを記述したりR6RSでREPLがなくなったりしてる
Arcはその辺に関して楽観的というか何も考えてないっぽい
0030デフォルトの名無しさん
2008/02/05(火) 19:52:01若くて元気で楽観的な青年 = Arc
は、そのうち何とかな〜るだろ〜お。
0031デフォルトの名無しさん
2008/02/05(火) 20:07:05arc> (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>
0032デフォルトの名無しさん
2008/02/05(火) 21:47:270033デフォルトの名無しさん
2008/02/05(火) 21:56:360034デフォルトの名無しさん
2008/02/05(火) 21:57:500035デフォルトの名無しさん
2008/02/05(火) 22:33:160036デフォルトの名無しさん
2008/02/05(火) 22:33:450037デフォルトの名無しさん
2008/02/05(火) 22:35:34Guy L Steel兄貴の存在
0038デフォルトの名無しさん
2008/02/05(火) 22:37:070039デフォルトの名無しさん
2008/02/05(火) 22:39:050040デフォルトの名無しさん
2008/02/05(火) 22:39:50オライリーの本
0041デフォルトの名無しさん
2008/02/05(火) 22:43:030042デフォルトの名無しさん
2008/02/05(火) 22:45:010043デフォルトの名無しさん
2008/02/05(火) 23:00:05けっこう発見があって面白い。黒川利明先生のLispの本にあったLispでLispを記述
する部分を思い出している。
ところでnamespace-set-variable-value!ってどこで定義しているのかと探しても
見つからない。プリミティブだった。へ〜。そんなのあるんだ。
(namespace-set-variable-value! 'a 1)
> a
1
> namespace-set-variable-value!
#<primitive:namespace-set-variable-value!>
>
0044デフォルトの名無しさん
2008/02/05(火) 23:02:230045デフォルトの名無しさん
2008/02/05(火) 23:09:320046デフォルトの名無しさん
2008/02/05(火) 23:10:080047デフォルトの名無しさん
2008/02/05(火) 23:14:38Schemeファイルとして出力される。
> (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|))))))
0048デフォルトの名無しさん
2008/02/05(火) 23:25:29スレ違いだがストールマンは?
0049デフォルトの名無しさん
2008/02/05(火) 23:32:510050デフォルトの名無しさん
2008/02/05(火) 23:33:020051デフォルトの名無しさん
2008/02/05(火) 23:33:30ストールマンは何で実装されてるの?
0052デフォルトの名無しさん
2008/02/05(火) 23:40:000053デフォルトの名無しさん
2008/02/05(火) 23:40:22で、xdefで関数名に _ を追加して名前空間にセットしているらしい。
(sin 3.14)がコンパイルされると
(ar-funcall1 _sin 3.14)
1000行くらいなら読めるしPaul Grahamが残したらしいコメントから
彼の思考過程を探ることもできそうだ。こりゃ、面白いぜ。
0054デフォルトの名無しさん
2008/02/06(水) 00:11:160055デフォルトの名無しさん
2008/02/06(水) 00:18:17(2 1 3)
なにこれ
0056デフォルトの名無しさん
2008/02/06(水) 07:27:58IronScheme
0057デフォルトの名無しさん
2008/02/06(水) 19:15:19http://natal.web.fc2.com/lambda.arc.txt
0058デフォルトの名無しさん
2008/02/06(水) 19:53:26あなた、すごい人だね。
解説、頼みます。
0059デフォルトの名無しさん
2008/02/06(水) 21:37:260060デフォルトの名無しさん
2008/02/06(水) 22:17:190061デフォルトの名無しさん
2008/02/06(水) 22:34:060062デフォルトの名無しさん
2008/02/06(水) 22:42:45> S式に囚われている限りRubyは勝てないね
だよ。
0063デフォルトの名無しさん
2008/02/06(水) 22:43:380064デフォルトの名無しさん
2008/02/06(水) 22:45:10単なるschemeの別バージョンならschemeスレでやれってこと。
糞スレ立てるなってこと。
0065デフォルトの名無しさん
2008/02/06(水) 22:47:270066デフォルトの名無しさん
2008/02/06(水) 22:48:10SchemeよりはむしろLispに近いと思うが
0067デフォルトの名無しさん
2008/02/06(水) 23:29:34(ac s env) のssyntax? って何だろう?と首をひねっていた。
car:cdr は〜、なるほど。
cccの使い方ってそれはバックトラック?
忙しいのかね〜。出てきて教えて欲しいね〜。
0068デフォルトの名無しさん
2008/02/07(木) 00:10:35Lisp-1 + hygienic macro = Scheme
Lisp-1 + legacy macro - パッケージシステム = Arc
らしい。ここの shiro さんのコメントより。
ttp://d.hatena.ne.jp/archacker/20080203/1201988205#c
0069デフォルトの名無しさん
2008/02/07(木) 00:18:2857じゃないけど、このcccの使い方はいわゆる大域脱出ってやつかな。
Common Lispだとblock/return-from、他の言語だとtry/catch/throw等の
例外機構を使う。
0071デフォルトの名無しさん
2008/02/07(木) 00:34:46マクロは竹内先生の本で覚えたのでlegacy macroの方が
自分にとってはわかりやすい。
Arcの方がなんとなくLispっぽいし気楽な感じでいいかも。
0072デフォルトの名無しさん
2008/02/07(木) 00:38:36「- パッケージシステム」は必要ない希ガス
0073デフォルトの名無しさん
2008/02/07(木) 00:43:160074デフォルトの名無しさん
2008/02/07(木) 00:54:04あーそうだね、そのまま引用しちゃったから気がつかなかった。
ちょっと補足。
関数と変数の名前空間に区別がないのがLisp-1で、区別があるのがLisp-2。
0075デフォルトの名無しさん
2008/02/07(木) 01:18:070076デフォルトの名無しさん
2008/02/07(木) 01:46:350077デフォルトの名無しさん
2008/02/07(木) 11:22:18いやー、あの人は現状のArcの出来だったらボロクソに言うと思うけどww
今後Arcは開発コミュニティによってどう育って行くのか楽しみだね。
0078デフォルトの名無しさん
2008/02/07(木) 13:46:02バージョン0のものを叩くってのは空気の読めないアホだけだよ
0079デフォルトの名無しさん
2008/02/07(木) 21:39:43こんなことをやってみた。
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) ... )をいじればいいのかな。
0080デフォルトの名無しさん
2008/02/08(金) 06:42:25そんなの無かったので追加してみた。
(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"
0081デフォルトの名無しさん
2008/02/09(土) 03:43:45明示的に変数名も入れられるとベターなんだけど。
[< a b c > ...]みたいな
0082デフォルトの名無しさん
2008/02/09(土) 08:05:390083デフォルトの名無しさん
2008/02/09(土) 08:21:22[]は元々違う意味ですよ?(superbrace)
0084デフォルトの名無しさん
2008/02/09(土) 08:50:360085デフォルトの名無しさん
2008/02/09(土) 09:55:53しかし fn や if の定義は変更できないほうがいい
0086デフォルトの名無しさん
2008/02/09(土) 10:07:42みたいな事書いてたけど、[]は数学的根拠はないよね。
if辺りの拡張も俺言語オナニーと発想レベルは同じ。
長生きしないでしょう。
0087デフォルトの名無しさん
2008/02/09(土) 11:58:02たとえば、関数適用とラムダ抽象は全然違うんだから全然違うカッコを使うべきだとか
0088デフォルトの名無しさん
2008/02/09(土) 15:15:45まあ定着するかどうかは微妙だと思うけど。
0089デフォルトの名無しさん
2008/02/09(土) 22:04:44長生きさせる気無いんじゃない?
というか最近、彼の一流の技術者的なジョークなんじゃないかという疑いを持つようになった。
あーだこーだ言ってる俺を見てほくそ笑んでるんでは無いかと。
Ctrl-Cの人はそれに気付いてジョークで返したんでは無いかと。
そうやっていつもアイツらは俺を笑ってるんだ。クソ!
0090デフォルトの名無しさん
2008/02/09(土) 22:24:53Paranoid schizophreniaの可能性がありますので医師に御相談ください
0091デフォルトの名無しさん
2008/02/09(土) 22:29:35Arcのソースにdefine-syntaxが一度たりとも出てこないのはわざとだろうなぁ
0092デフォルトの名無しさん
2008/02/10(日) 10:16:44>[]は元々違う意味ですよ?(superbrace)
いつの時代の話してんの?w
その処理系つかったことあるの?w
0093デフォルトの名無しさん
2008/02/10(日) 11:12:31なめんな。お前みたいな俄かLisperとは違うわ。
大した手間でもないから、わざわざ自分の
処理系には必ず入れていたぐらい精通してるよ。
後でマイナーな存在だと知ったけどな。
結局、閉じ括弧が減った程度じゃ、
一般人にLispは受け入れられないと悟った。
俺も色々変態構文は作ってきた方だが、
arcの[]みたいな使い方は思いつかなかった。
#fn <args> <expr> => (lambda <args> <expr>)
みたいな物ならいくつもあるが。
0094デフォルトの名無しさん
2008/02/10(日) 11:22:210095デフォルトの名無しさん
2008/02/10(日) 12:31:02わりと論旨がとっちらかってて、なにが言いたいのか分からないんだけど、
でも、なんだか凄い人なのは理解できたかも!!!!!
Arcに超カッコが取り入れられる日も近い!
一般人への啓蒙のためにも[]は超カッコで、#L()を採用するべきだわ。
それか、gooみたいに(op _)とかね!まあ、cutでも良いか!
ちなみに#fn <args> <expr>って俄Lisperの漏れには
一見全然便利そうに見えないんですけど、どういうところで、
便利なんですか?!!!
どこまでが後悔関数の引数なのか分かんなくなって混乱しちゃいそうです!!
0096デフォルトの名無しさん
2008/02/10(日) 13:46:050097デフォルトの名無しさん
2008/02/10(日) 14:07:14まともなエディタがあれば要らないね。w
あと [ ] を vector と解釈する処理系も無かったっけ。Interlispだっけか。
0098デフォルトの名無しさん
2008/02/10(日) 14:22:410099デフォルトの名無しさん
2008/02/10(日) 15:35:480100デフォルトの名無しさん
2008/02/10(日) 16:01:42「わりとなんだか凄い人」なのは判ってくれたようだが、
分からないのは理解しようと努力してないからだ。
>ちなみに#fn <args> <expr>って俄Lisperの漏れには
さて、この変態構文の例を>>7のコードで示せばこうなる。
(trues #fn (_) (if (odd _) (+ _ 10)) '(1 2 3 4 5))
何が便利かはこれで判るだろ。
少なくともarcの[]の様なナンセンスな仕組みよりも、
何を意図するものか判り易い。
付け足すなら、短く書きたいという願望は判るが、
arcの[]は引数が'_'限定では述語ぐらいにしか使えないし、
'_'という名前が名前だけに、読み手に意図も伝えられない。
実際に[]が入っているコードを見たら、頭を1回転させないと
判らない難解さを感じた。
いくら短く書けてもぱっと見で意味不明なのは問題だろうよ。
lambdaをfnに変えたぐらいのセンスで、もうひと捻り欲しい。
0101デフォルトの名無しさん
2008/02/10(日) 16:20:44センスが悪いと生きるのも大変だろうね。
0102デフォルトの名無しさん
2008/02/10(日) 16:28:410103デフォルトの名無しさん
2008/02/10(日) 16:30:22単に慣れないから不自然に見えるだけなのか、根本的に使いにくい構文なのかが一見では区別できない
0104デフォルトの名無しさん
2008/02/10(日) 16:36:49自分の中に入りすぎていて論旨がわかりにくい。
もうちょっと行数を減らしてくれないと読むのが苦痛だ。
0105デフォルトの名無しさん
2008/02/10(日) 16:42:35日記です。
0106デフォルトの名無しさん
2008/02/10(日) 17:59:59>>101 このレベルじゃ常人に理解されなくても困らないんだぜ。
>>102 ネストなんて意図を汲み取れば考慮の外だろ。
>>103 俺なら経験とカンである程度判断できる。
>>104 苦痛でも無理して読むといいよ。
>>105 いい目をしているな、それに度胸もいい。
あえて言うなら[]があればその中で'_'が使われている可能性アリ、
という対の関係を脊髄反射的に印象付けられる、変数ではなく
記号的な識別を行えるという目論見はあるだろうな。
0107デフォルトの名無しさん
2008/02/10(日) 18:04:510108デフォルトの名無しさん
2008/02/10(日) 18:09:190109デフォルトの名無しさん
2008/02/10(日) 18:52:510110デフォルトの名無しさん
2008/02/10(日) 19:07:53日本だと成功しないよあんた
0111デフォルトの名無しさん
2008/02/10(日) 22:38:580112デフォルトの名無しさん
2008/02/10(日) 23:05:250113デフォルトの名無しさん
2008/02/10(日) 23:16:160114デフォルトの名無しさん
2008/02/10(日) 23:56:32アフガニスタンとかか?
0115デフォルトの名無しさん
2008/02/11(月) 07:12:51ちょっとでも複雑なコードが書きたいなら、普通に fn で書けばいいんだよ。
変数名とかがなくても一目でわかるくらいのコードに限定して、便利に使えればそれでいい。
別に fn を置き換えるようなものじゃないんだから。
0116デフォルトの名無しさん
2008/02/11(月) 09:08:010117デフォルトの名無しさん
2008/02/11(月) 09:28:42現在のスコープで最も内側で束縛された変数を 1 とする
0118デフォルトの名無しさん
2008/02/11(月) 09:43:220119デフォルトの名無しさん
2008/02/11(月) 09:51:32そうだよね、letとwithの関係みたいなね。
引数が一つだけのlambdaが多用されるから便利に、ってことなんじゃないのかしら。
0120デフォルトの名無しさん
2008/02/11(月) 09:57:17BoostはおいといてArcの[]を一般化しようという妄想だから
>>115
その「限定された範囲で便利に使える」機能は
普遍的な機能 (マクロなど) から導き出せるはずだっていう思想があるから
fnを置き換えるほど普遍的な機能だ
ということにすれば受け入れられやすいのではないか
0121デフォルトの名無しさん
2008/02/11(月) 18:42:150じゃね? まどっちでもいいんだが
0122デフォルトの名無しさん
2008/02/13(水) 20:10:50x.yとか、x!yとか新しい構文が…。
0123デフォルトの名無しさん
2008/02/13(水) 22:56:21> (expand-ssyntax 'x.y)
(x y)
> (expand-ssyntax 'x!y)
(x (quote y))
0124デフォルトの名無しさん
2008/02/13(水) 23:36:090125デフォルトの名無しさん
2008/02/13(水) 23:59:480126デフォルトの名無しさん
2008/02/14(木) 00:03:53ここらで一気に強い型な言語になろうぜ
0127デフォルトの名無しさん
2008/02/14(木) 00:25:28(= x!key 'val)
将来的には「applyメソッドをoverride」したり中置記法のマクロを書けるようになるのか?
0128デフォルトの名無しさん
2008/02/14(木) 00:27:170129デフォルトの名無しさん
2008/02/14(木) 07:30:080130デフォルトの名無しさん
2008/02/14(木) 14:31:03他にも変更になったのあるのかしらん。
0131デフォルトの名無しさん
2008/02/21(木) 01:23:290132デフォルトの名無しさん
2008/02/25(月) 17:37:51http://d.hatena.ne.jp/lionfan/20080224
・Arcをリリースした - 武蔵の日記
http://d.hatena.ne.jp/sirocco634/20080130/
・ポール・グレアム「Arc公開」を翻訳しかけたのですが - らいおんの隠れ家
http://d.hatena.ne.jp/lionfan/20080225
0133デフォルトの名無しさん
2008/03/01(土) 00:38:24型やマクロに制約のある言語を使ってると
その制約と相性の悪い新機能を使うために新しい言語に移行するパターンが多くないか?
制約のある言語はいつか破綻するものと割り切って使うしかないのか?
0134デフォルトの名無しさん
2008/03/01(土) 02:02:360135デフォルトの名無しさん
2008/03/01(土) 03:54:09ポールグレアムは「高級言語はプログラムを短くするためにある」と言った
でも普通のやつらは新しい機能を使うために新しい言語を使うんじゃないか
そこには、新しい機能を古い言語で実現できないという前提がある
Arcが期待はずれだった人も、
プログラムを短くすることではなく、新しい機能を期待していたのだと思う
だがポールグレアム的には、古い言語で実現できない新しい機能など存在しない
できないのは言語に色んな制約をつけた奴が悪い
で、静的型やhygienic macroのある言語って何なの?って話
0136デフォルトの名無しさん
2008/03/01(土) 04:00:17いやないんじゃないかと思った。今では慣れた。endすらうざい。
0137デフォルトの名無しさん
2008/03/01(土) 04:02:05Rubyのことを言ってるならあれはEmacsから一発でインデントと共に
入れるもの。
0138デフォルトの名無しさん
2008/03/01(土) 08:04:09インデントだけじゃなくて移動とか。
PostScriptみたいに[,]が実はオペレータってのも勘弁だが。
0139デフォルトの名無しさん
2008/03/01(土) 08:21:110140デフォルトの名無しさん
2008/03/01(土) 10:20:11inputが面倒という以外に、視覚的に鬱陶しいというのもあるのでは?
0141デフォルトの名無しさん
2008/03/01(土) 23:27:59Lispの括弧と同じで慣れれば見えなくなるけどね
0142デフォルトの名無しさん
2008/03/02(日) 14:13:23Arcで書かれたポールグレアムの News.YC がオープンソース化
http://d.hatena.ne.jp/higepon/20080225/1203913944
0143デフォルトの名無しさん
2008/03/02(日) 14:15:13http://practical-scheme.net/wiliki/wiliki.cgi?Arc%E3%81%8B%E3%82%89%E3%81%AE%E6%8C%91%E6%88%A6
0144デフォルトの名無しさん
2008/03/02(日) 14:17:36http://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 で書くには標準的な書きかたなのだ。
0145デフォルトの名無しさん
2008/03/02(日) 15:51:220146デフォルトの名無しさん
2008/03/02(日) 16:20:280147デフォルトの名無しさん
2008/03/02(日) 19:14:13http://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内部ノード
0148デフォルトの名無しさん
2008/03/06(木) 17:09:30- Paul Graham のエッセイは翻訳が許可されている
http://tamo.tdiary.net/20080304.html#p01
> たとえば cond マクロ。こいつには Lisp 1 からこのかた余計な括弧がびっ
> しり付いてきて、それを誰も何ともしてこなかった。 if と cond を押しつ
> ぶしてひとつのオペレータにする Arc の技も、誰かがとっくに見つけてい
> たっておかしくなかったのだが、 間違いなくそんな周知の事実はない。こ
> んなことができると気づいたときは嬉しかったなあ。
これって何の話?誰か教えてプリーズ。
0149デフォルトの名無しさん
2008/03/06(木) 17:18:000150デフォルトの名無しさん
2008/03/06(木) 18:00:43if の引数が偶数個のときは、else節が無いということかな。
0151デフォルトの名無しさん
2008/03/06(木) 20:42:110152デフォルトの名無しさん
2008/03/06(木) 21:12:250153デフォルトの名無しさん
2008/03/06(木) 23:16:16要素の数を数えるより、括弧の対応だけ追うほうが楽だし。
ただ、 Arc の if のが書きやすいかもしれないとは思う。
0154デフォルトの名無しさん
2008/03/06(木) 23:20:280155デフォルトの名無しさん
2008/03/06(木) 23:31:54letは良いんだけど。
>>154
インデントで見やすくする、っていう発想/行為自体が、括弧を減らすことで、
見やすさが向上してないってことじゃなかろうかww
まあ、もっと高尚な目的のために括弧を減らしたんだろうけどね。
0156デフォルトの名無しさん
2008/03/08(土) 02:20:130157デフォルトの名無しさん
2008/03/08(土) 02:43:380158デフォルトの名無しさん
2008/03/08(土) 02:49:430159デフォルトの名無しさん
2008/03/08(土) 03:01:000160デフォルトの名無しさん
2008/03/08(土) 03:31:470161デフォルトの名無しさん
2008/03/08(土) 03:33:580162デフォルトの名無しさん
2008/03/08(土) 04:13:23俺は心の中では「ぷろぐなぁー」。人前では発音したことない。l
0163デフォルトの名無しさん
2008/03/08(土) 08:40:290164デフォルトの名無しさん
2008/03/08(土) 09:02:03人前で読むなら「プログエヌ」だろうか。
0165デフォルトの名無しさん
2008/03/08(土) 11:30:46人前でなければ発音しないw
0166デフォルトの名無しさん
2008/03/08(土) 12:09:270167デフォルトの名無しさん
2008/03/08(土) 12:22:24letな局面も多くて、いつもしているわけじゃないけど。
あと、elseifが連なる時、どれが条件だか分かりにくいわ。
今のインデントルールだと全部同じ高さだから。
まあこんなのはどうでもいいところだけど。
0168デフォルトの名無しさん
2008/03/09(日) 05:07:570169デフォルトの名無しさん
2008/03/09(日) 11:43:010170デフォルトの名無しさん
2008/03/11(火) 17:25:49機能とかあるの?
0171デフォルトの名無しさん
2008/03/11(火) 17:30:420172デフォルトの名無しさん
2008/03/14(金) 14:41:100173デフォルトの名無しさん
2008/03/18(火) 12:42:00マクロでこんなん作りましたレベル
0174デフォルトの名無しさん
2008/03/18(火) 22:05:250175デフォルトの名無しさん
2008/03/18(火) 22:12:10もはやLispではないかもしれんが。
0176デフォルトの名無しさん
2008/03/19(水) 00:34:08もうちょっとは盛り上がります罠。
0177デフォルトの名無しさん
2008/03/19(水) 00:43:37ファースト・オーサーは佐藤さん。
二分木を基底にした数学的意味を持つLisp。
0178デフォルトの名無しさん
2008/03/19(水) 02:03:330179デフォルトの名無しさん
2008/03/19(水) 21:51:23今の感覚からみるとHyperってのが時代を感じるね。
0180デフォルトの名無しさん
2008/03/19(水) 22:43:410181デフォルトの名無しさん
2008/03/20(木) 00:14:10日本語でおk
0182デフォルトの名無しさん
2008/03/20(木) 00:24:320183デフォルトの名無しさん
2008/03/20(木) 00:46:120184デフォルトの名無しさん
2008/03/20(木) 10:33:550185デフォルトの名無しさん
2008/03/20(木) 22:12:58鉄の定規は、使用禁(ry
0186デフォルトの名無しさん
2008/03/20(木) 22:13:190187デフォルトの名無しさん
2008/03/20(木) 23:49:460188デフォルトの名無しさん
2008/03/20(木) 23:52:010189デフォルトの名無しさん
2008/03/20(木) 23:52:450190デフォルトの名無しさん
2008/03/20(木) 23:56:16>>180へ無限再帰
0191デフォルトの名無しさん
2008/03/20(木) 23:56:210192デフォルトの名無しさん
2008/03/20(木) 23:57:490193デフォルトの名無しさん
2008/03/20(木) 23:58:340194デフォルトの名無しさん
2008/03/21(金) 09:01:280195デフォルトの名無しさん
2008/03/21(金) 22:39:21ハイパーカードのスタックに特化した季刊誌があったような希ガス。
0196デフォルトの名無しさん
2008/04/06(日) 16:46:180197デフォルトの名無しさん
2008/04/08(火) 00:01:02もう少しまとまった形になってから出してくれた方がいい。
0198デフォルトの名無しさん
2008/04/08(火) 03:57:31どのあたりから肉とか魚になるのさw
0199デフォルトの名無しさん
2008/04/08(火) 23:20:130200デフォルトの名無しさん
2008/04/09(水) 00:20:320201デフォルトの名無しさん
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)))))))
0202デフォルトの名無しさん
2008/04/22(火) 20:44:470203デフォルトの名無しさん
2008/04/22(火) 22:14:44どうなってるんだソレ
0204デフォルトの名無しさん
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))
0205デフォルトの名無しさん
2008/04/23(水) 20:04:10(= 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)))))))
0206デフォルトの名無しさん
2008/05/03(土) 16:38:210207デフォルトの名無しさん
2008/05/03(土) 18:23:24まだ表面的な部分しか公開されていないが実はそうなんジャマイカ?
0208デフォルトの名無しさん
2008/05/09(金) 00:02:320209デフォルトの名無しさん
2008/05/09(金) 06:50:390210デフォルトの名無しさん
2008/05/09(金) 07:02:55http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A3%E3%83%9E%E3%82%A4%E3%82%AB
0211デフォルトの名無しさん
2008/05/09(金) 20:32:07そのリンクは『ジャマイカ』ジャマイカw
0212デフォルトの名無しさん
2008/06/08(日) 01:13:480213デフォルトの名無しさん
2008/06/08(日) 01:48:210214デフォルトの名無しさん
2008/06/08(日) 01:55:400215デフォルトの名無しさん
2008/06/08(日) 03:04:400216デフォルトの名無しさん
2008/06/08(日) 03:59:290217デフォルトの名無しさん
2008/06/11(水) 13:40:390218デフォルトの名無しさん
2008/10/17(金) 02:34:210219デフォルトの名無しさん
2008/11/26(水) 03:21:470220デフォルトの名無しさん
2009/01/14(水) 12:06:47slibとかそのままもってこれる?
0221デフォルトの名無しさん
2009/05/18(月) 20:31:120222デフォルトの名無しさん
2009/05/18(月) 20:32:14俺実装しようかな。
0223デフォルトの名無しさん
2009/05/18(月) 21:43:49頼むよ、このままじゃPlan9みたいに
第三のプログラムが作成されない現状のままになるから。
Common Lispはでかい割に必要な機能がないという異常事態だし。
0224デフォルトの名無しさん
2009/05/19(火) 16:47:300225デフォルトの名無しさん
2009/05/19(火) 16:50:110226デフォルトの名無しさん
2009/05/19(火) 18:32:09そんなにさくっとLispインタプリタがかけるようになるのは
どういう練習をしたらいいんだ?
どういう練習をしたら良いのかさっぱりわからん、
Cのプロフェッショナルになる必要が有るのだろうか?
0227デフォルトの名無しさん
2009/05/19(火) 18:40:20さくっとかけないの?馬鹿なの?
0228デフォルトの名無しさん
2009/05/19(火) 19:20:16さくっとかけないよ.
だよ、Listを読み込む方法がわからないよ。
(から)までなの?
`(バッククオート)の処理の方法が思いつかないよ
0229デフォルトの名無しさん
2009/05/19(火) 19:25:350230デフォルトの名無しさん
2009/05/19(火) 19:34:08調べろよ。
OpensoruceのLispの処理系なんていくらでもあるだろ。
それに、Lispの処理系を作ったことがないとか、プログラマーとして如何なものかと思う。
0231デフォルトの名無しさん
2009/05/19(火) 22:03:50さすがにそれはどうか
いや作ったことあるけどさ
0232デフォルトの名無しさん
2009/05/19(火) 22:11:47つか、オレオレ言語の一つもって意味なんじゃね?
0233デフォルトの名無しさん
2009/05/20(水) 13:47:37作っただろ、プログラマーなら
どことなくLispに惹かれて
なんとなく書いちゃうもんなんだよ。
0234デフォルトの名無しさん
2009/06/18(木) 08:03:110235デフォルトの名無しさん
2009/08/09(日) 03:16:45最新のMzScheme対応
0236デフォルトの名無しさん
2009/12/03(木) 20:49:25クリスマスの予定は決まったか??
0237デフォルトの名無しさん
2010/01/11(月) 23:30:120238デフォルトの名無しさん
2010/02/04(木) 23:28:100239デフォルトの名無しさん
2010/04/08(木) 21:08:210240デフォルトの名無しさん
2010/05/02(日) 16:23:330241デフォルトの名無しさん
2010/07/06(火) 07:02:290242デフォルトの名無しさん
2010/07/08(木) 02:28:53誰も付いてこれなくなったか
0243デフォルトの名無しさん
2010/07/08(木) 03:05:310244デフォルトの名無しさん
2010/07/17(土) 19:06:410245デフォルトの名無しさん
2010/07/18(日) 02:41:480246デフォルトの名無しさん
2011/04/18(月) 18:48:11.530247デフォルトの名無しさん
2011/05/02(月) 20:11:09.7602481
2011/06/16(木) 17:43:43.610249デフォルトの名無しさん
2011/07/02(土) 01:06:29.960250天使 ◆uL5esZLBSE
2011/07/02(土) 02:36:40.87変数に$ついてる言語触ってるって事だよね
いちいちSHIFT+4キーおして $ 打ちまくってる感触はどう?
0251デフォルトの名無しさん
2011/07/02(土) 02:45:27.22頭にウジがわきましたか?
それをこのスレで言われましても。
0252天使 ◆uL5esZLBSE
2011/07/04(月) 12:55:42.280253天使 ◆uL5esZLBSE
2011/07/04(月) 20:38:19.05「「「「「「 さっさと死ねばいいんじゃね? 」」」」」」(キリッッ!キリッッッッキリッッッ!!キリッッッ
---------(きリッッきリッッ
0254デフォルトの名無しさん
2011/07/09(土) 01:31:24.09これは良いっすな
0255デフォルトの名無しさん
2011/07/10(日) 04:20:01.44https://github.com/Pauan/ar/blob/lib/arc2js.arc
0256248
2011/10/27(木) 22:41:56.40■ このスレッドは過去ログ倉庫に格納されています