Lisp Scheme Part41 (855レス)
上下前次1-新
256(2): 2020/12/02(水)12:39 ID:2sTDa/BO(1/4) AAS
継続渡しスタイルに書き換える方法がわからないではなくて継続渡しスタイルに書き換える意味がわからないからかな?
257(1): はちみつ餃子 ◆8X2XSCHEME 2020/12/02(水)13:45 ID:wCsCmSK2(2/3) AAS
ああ。 なるほど。
継続渡し形式でプログラムを書くことは実際にまず無いし便利でもないので
その点では意味不明と感じられても仕方がないことではあるな。
後の話 (第一級継続) に繋がる前振りだと思うので、
この時点ではパズルとでも思ってとりあえずこなすしかないわ。
258(2): 2020/12/02(水)22:18 ID:3rT4yRJc(1) AAS
>>256
そんな感じです
例で挙げられてる渡される側の関数が何したいのかよくわからないし
多分、教育的に意図的にそうしてるのかもしれないけど
その意図がいまいちわからなくてモヤモヤするんですよね
>>257
一応追っかけることは出来るんですが
直で継続教えてもらったほうがわかりやすいような気がするのですが…
つまり、読めてないってことなんだろうなと
259: 256 2020/12/02(水)22:40 ID:2sTDa/BO(2/4) AAS
俺はsicpでcall-cc出てきてもさっぱり理解できなかったけど、
onlispで継続の実装を読んでやっと理解できた。
継続でできることってのは超高性能goto(?)が使えるようになることなんだけど、
そのためには継続渡しスタイルで今までの状態(実際はクロージャだけど)の全部または一部を渡して計算をしていくんだよ。
渡されたクロージャのどれかを呼び出す事によって以前の状態に復帰できる。
みたいなことだったと思う。空覚えなんで誰か突っ込んでね。
それと本のわからんところのコードを貼れば誰か解説してくれんじゃない。
260: 2020/12/02(水)22:45 ID:2sTDa/BO(3/4) AAS
超高性能gotoって書いてるのは普通の言語のgotoって同じ関数内でしかジャンプできないんだけど、
継続なら安全に関数間でもジャンプできるっていう意味。
261: 2020/12/02(水)22:48 ID:2sTDa/BO(4/4) AAS
継続はわかってしまえば当たり前でどこにでも存在してるんだけど、
継続を考えたやつは本当頭いいわとおもった。
262: はちみつ餃子 ◆8X2XSCHEME 2020/12/02(水)23:20 ID:wCsCmSK2(3/3) AAS
>>258
「プログラミング言語 Scheme」や「プログラミング Gauche」でもそういう手順で説明されている。
ネット上で見つかる解説でもよくあるパターン。
外部リンク[html]:www.shido.info
外部リンク[html]:www.nct9.ne.jp
ようするに定番なんですわ……。
263: 2020/12/03(木)00:08 ID:BSRv8eBD(1) AAS
なんでも継続
外部リンク[html]:practical-scheme.net
はよ完成させて
264: 2020/12/03(木)12:12 ID:vc9+WZu6(1) AAS
Landin's J operator の糖衣みたいなもんじゃ?
call-ccって.
265: 2020/12/03(木)14:15 ID:sf+VFKLQ(1) AAS
普段cl書きなんでこのまま動くか知らんが、雰囲気はたぶん
(define call/cc (lambda (func) (func (J (lambda x x)))
266: 2020/12/03(木)19:48 ID:1MHSKMz8(1) AAS
>>258
継続渡しの初期の用例にヒューイットのアクター理論があるように
並行性が絡むと有り難いこともあるけど
Schemeの規格にそういうのがないから
Gaucheを使ったウェブアプリサーバーにKahuaってのがあったけど
あれが継続渡しを使ってたはず
267: 2020/12/04(金)22:12 ID:9AUT9QCq(1) AAS
エンジニアが教えるの下手くそな理由を論理的に解説してみた【教育の本質】
動画リンク[YouTube]
派遣エージェントの言う事は9割ウソである理由【カモられない方法】
動画リンク[YouTube]
IT業界のヤバすぎる落とし穴5選
動画リンク[YouTube]
絶対にエンジニアになってはいけない人とは【ハイクラス人材】
動画リンク[YouTube]
りゅうけんKENTAマナブは怪しいアフィ勢だとベテランエンジニア(笑)に言われるらしいwww
動画リンク[YouTube]
【個人で稼ぐ】会社を辞める前に習得しておくべきスキル5選
動画リンク[YouTube]
【聞いてください】「会社員」という働き方の本当のヤバさ
動画リンク[YouTube]
サラリーマンが知らないフリーランスの真実
動画リンク[YouTube]
268: 2020/12/07(月)13:18 ID:kze+rPTU(1) AAS
結局call/ccは実装読んだ方が早い
269: 2020/12/08(火)00:25 ID:g/rTchWW(1) AAS
そういう発想はschemeっぽくないと思う
これはコンピュータにかける魔法言語なんだからぁ
270: 2020/12/08(火)10:24 ID:7buWiz9t(1) AAS
schemeは知らんがclでcall/ccエミュってるぞ、こういうのは勉強になる
閲覧無料の論文もたくさん出てくるし、確かrosetta code(だったか)に少し残念だけど動く実装載ってた気がする
デフォでdynamic scopeのclの方が(エミュる)のはむしろ簡単な気がする
271: 2020/12/10(木)03:16 ID:FVBY7yTa(1) AAS
clデフォでdynamic scopeじゃないな
どういうcps実装なん
272: 2020/12/10(木)19:52 ID:m5YUCflP(1) AAS
dr.schemeを起動したらada lavelaceが表示された。12月10日が誕生日らしい。
273: 2020/12/18(金)00:23 ID:xE2tdWzM(1) AAS
3月にサスマンの新しい本が出ますね
274: 2020/12/18(金)00:35 ID:wHl77nxB(1) AAS
Software Design for Flexibility
How to Avoid Programming Yourself into a Corner
外部リンク:mitpress.mit.edu
275: ◆QZaw55cn4c 2021/01/02(土)01:05 ID:wp0Bo1A/(1) AAS
>>6
この冬、職場から休暇をいただいたことをきっかけに a little schemer への再チャレンジを始めました
2週間では >>6 までは進めなかったけれども、しつこくてべたな精読を今後も継続することにしました‥‥個人的な話でごめんなさい
276: 2021/01/02(土)09:30 ID:DXffwUjS(1) AAS
頑張れ
277: はちみつ餃子 ◆8X2XSCHEME 2021/01/02(土)12:55 ID:rf+zWHQf(1) AAS
2018 年の話題へスレ内でアンカーできるあたり、だいぶん進みの遅いスレだなぁ……
ところで先月、 Gauche の 0.9.10 がリリースされたよ。
278: 2021/01/11(月)12:28 ID:evx8yw3j(1) AAS
最近Clojureをさわって思ったんだけど、コンスって必要?ただのリストじゃだめなん?
279(1): 2021/01/11(月)22:00 ID:TgqHKx3G(1/2) AAS
最近はlistと言いつつ狭義のlist(linked)じゃなくlinked arrayな事が多いけどclosureもそれかな?(触ってないごめん
(三十年前の言語だけど)Pythonのコード読んだけどそうだったはず
計算量の議論なんかだとlinked listとarrayは一長一短ってことになってるが、アーキテクチャと殆どのデータの性質によって連結配列が実質万能なんで仕方ないね
抽象データ型としてcons/car/cdrというインターフェイスを提供してるなら十分lispだよ
consがなんでそんな大事なのかというと、普通に使われる抽象データ型の中では最も表現力が高いこと
単に自由に伸ばせるリストのようなモノでは、構文上バイナリツリーより複雑な構造は書きにくい(ポインタを駆使しない限り)
consが提供されていれば自然に平面DAGが、そしてちょっと読みにくくなる程度で任意のグラフが表現できる
化学構造やグラフをconsで扱ってるけどほんと便利だよ
280: 2021/01/11(月)23:51 ID:TgqHKx3G(2/2) AAS
書きにくい/やすい、ってのは環や分岐がcarとcdrとconsだけで書けるって意味ね
これらのアクセサが提供されていない言語、例えはPythonやcではリストのインデックスに対応する参照/ポインタを明示的に取り出して記録し、アドレスを格納する必要がある
またアルゴリズムにかける時に素の型とポインタ型を区別して場合分けする必要まである
そのまま文字列として吐くのも実装しなくていいし(リンク先のインデックス表示が読みやすいとは言わないが)
PythonなんかだとオブジェクトがリッチなのでnetworkXのような巨大なライブラリを使えば木を超えた表現も自然にかけるので、一時浮気をしたが…
形式言語の分野だともう線形な文字列や二分木の括弧文法は研究され尽くしてるので、グラフ文法なんかが最近流行ってlisp系言語で論文書かれてるね
281: 2021/01/12(火)00:03 ID:XqNkUArk(1) AAS
連投してごめんだけど、環や分岐がポインタ使わず自在に描けるのはかしこいsetfの寄与もある、って書き忘れてた(schemeはset-cdr!だっけ)
念のため
282: 2021/01/13(水)22:45 ID:c60O+Iz7(1) AAS
>>279
興味深い内容をありがとう
ちょこちょこ遊んでいるだけなので到底そこまで使いこなせる気がしないけど、
データをプログラム中にストレートに表現して操作できるというのはよく分かる
他の言語だとデータを保持するためにわざわざクラス設計からしないと
いけないような強迫観念にかられるけど、lispはそういう気にならない
283: 2021/01/14(木)12:13 ID:/NlgSZrU(1) AAS
データ型を定義しないのはトイプログラムだけだけどな
Lispはリストだけ使うのが通だとか善意で広めないでくれよ
284: はちみつ餃子 ◆8X2XSCHEME 2021/01/14(木)22:43 ID:9qLPLWCT(1) AAS
(カッチリした型を中心にする言語に比べれば) 最初はラフに
書き始められるというのはあると思うよ。
でも、そのままだと千行くらいの規模でももうだいぶんキツいんじゃないかな。
人によってはコードを書く腕力 (?) というか強引に行けちゃう人もいるけど、
雑に試行錯誤できるということとそこから部品として確立するのは別の段階なので、
試行錯誤で弄ってるときと同じノリでどんどん拡大していったら
すぐわけわからんようになる。
世間で思われているよりは型定義はすると私も思う。
285(1): 2021/01/15(金)01:43 ID:Hai3vgIl(1) AAS
そういう後付けのボイラープーレトにはCLOSやジェネリックよりコンパイラマクロが便利ね
上下前次1-新書関写板覧索設栞歴
あと 570 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.019s