【普通のやつらの】 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
0108デフォルトの名無しさん
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まだ表面的な部分しか公開されていないが実はそうなんジャマイカ?
■ このスレッドは過去ログ倉庫に格納されています