TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
スレ立てるまでもない質問はここで 152匹目
Javaはもう死んだの? Part.2
ふらっと C#,C♯,C#(初心者用) Part147
Google App Engine for java
■暗号技術【ROUNDsurea】■
Access VBA 質問スレ Part2
Boost総合スレ part10
今まで見た中で一番すげーコメント
HelloWorld集めようぜ
古代VBプログラマ質問スレ(Ver.6.0 まで) part65

【普通のやつらの】 Arc Language 0 【上を行け】


1 :2008/02/04 〜 最終レス :2018/07/04
プログラミング言語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辺りの拡張も俺言語オナニーと発想レベルは同じ。
長生きしないでしょう。

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で[]を再現出来るんじゃなかったっけ?

100 :
>>95
「わりとなんだか凄い人」なのは判ってくれたようだが、
分からないのは理解しようと努力してないからだ。
>ちなみに#fn <args> <expr>って俄Lisperの漏れには
さて、この変態構文の例を>>7のコードで示せばこうなる。
(trues #fn (_) (if (odd _) (+ _ 10)) '(1 2 3 4 5))
何が便利かはこれで判るだろ。
少なくともarcの[]の様なナンセンスな仕組みよりも、
何を意図するものか判り易い。
付け足すなら、短く書きたいという願望は判るが、
arcの[]は引数が'_'限定では述語ぐらいにしか使えないし、
'_'という名前が名前だけに、読み手に意図も伝えられない。
実際に[]が入っているコードを見たら、頭を1回転させないと
判らない難解さを感じた。
いくら短く書けてもぱっと見で意味不明なのは問題だろうよ。
lambdaをfnに変えたぐらいのセンスで、もうひと捻り欲しい。


100〜のスレッドの続きを読む
くだすれPython(超初心者用) その45【Ruby禁止】
米国国防省の標準高等言語エイダ(Ada)を語れ!
【Java標準GUIライブラリ】 JavaFX スレッド
C++相談室 part148
【統計分析】機械学習・データマイニング28
生産性が低いC++で頑張るために必要な知識
C言語なら俺に聞け 154
ハッシュ使うのやめてクラスにしましょう
オブジェクト指向は愚かな考え。この世は計算式 ★3
ふらっと C#,C♯,C#(初心者用) Part144
--------------------
レミリア・スカーレット個別スレ 三十四の符
「大津市」または「滋賀県」と付けて萎える番組名 14
試合日程・観衆・チケット・入場料・観戦マナーやローカルルール 総合スレッド 28
【韓国】与党が発狂「経済報復ではなく経済侵略だ」 特使派遣も「現時点では不適切」
【スバル】SUBARUの期間工125【旧富士重工業】
年収400万以下の男が婚活する場合、絶対に共働きのみ、選択肢は存在しない
読書について語り合いましょう part18
信長の野望・大志 様子見スレ part4
19XXを超える名作はなかった
戦国無双4 Empires part2
中国・韓国・北朝鮮が大好きな奥様 181
【arka】人工言語アルカ【総合スレ】その11
【大阪】頭にはさみ刺さり女性死亡 西成の市営住宅  [すらいむ★]
東海地方の花火大会情報 4
【生活習慣改善】早寝早起きの人が書込むスレ60日目
【涙なしには】閉店した喫茶店【語れない】
創価の悪口を言ったら精神病院に連行された人のスレ
【朗報】α7からニコンZに乗り換える人が激増 V
劇場版 夏目友人帳 〜うつせみに結ぶ〜
JK「おっさん。現実見ろって。JKが本気で惚れる男は同世代のイケメン。なにをトチ狂って金以外でくっさいオッサンを選ぶんだかw」 [411361542]
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼