2021/11/03
本日は新アナザー宿直バイト。
か・・快適すぎる!!2時間の掃除を終えたら後は12時間待機w。
しかも・・週に1~2日の予定だったのだけど日曜日に予定していた人が駄目になったので固定で入って欲しいという!
ぃよろこんで!
あんまりにもラッキーが続くので恩返しをするべくNPO団体「グッドネイバーズジャパン」に毎月寄付をすることにしたw
さて、プログラミングの方はパソコンを持っていかなかったので読んで頭の中で流れをなぞるだけ・・一応備え付けのPCもあるんだけど使って良いものなのかどうなのか・・・
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
Pythonだったらグーグルコラボレートで本格的に出来そうだけど・・まあ、まだ先の話だな。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
お気楽Schemeで高階関数を読む。すごく丁寧!なのにいまいちピンと来てない自分の不甲斐なさを嘆くばかり。得意な形の末尾再帰ばっかりじゃなくて名前付きLetとか普通の再帰も出来るようにならんといかんな・・
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
は~なるほど!こういう捻りの効いた?パターンを楽しく感心しながら読んでおくのも良いなぁ
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
辞書みたいなことも出来るんですねぇ!
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
Apply面白そう
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
カリー化面白そう。名前が既に面白い(Haskellの人から来てるのかな)。まあ、とりあえず思い出したり感心したりしながら読んで行って脳に「なじみ」をつけるとしようか・・・脳は知ってることしか認識できないそうだから。
明日は一日オフだからゆっくりと・・手を動かしてプログラミング学習するかな!
2021/11/02
今日は清掃バイトからの宿直バイト。労働してますねぇ~
夕方は結局時間が取れなかったので宿直の待機時間に気合で英語のLISP本をキンドルPWで読書・・してたけど目の疲れで寝落ち。睡眠導入効果もあるのか!
朝の見回りを終えた後、二度寝しないでスマホでCametan42さんの「クラス入門」の回(傑作)と「お気楽Scheme」の高階関数のところを読む。ま、読んでるだけじゃあねぇ・・しょうがないのでいずれ作るであろうLISPでのプログラムを夢想する。まずは画面をクリアするCLR関数は(newline)か’()を20回くらい表示すれば良いか・・とかマップはリスト内にリストを入れて管理出来るかな・・キー入力の方法は調べないといかんなぁとか・・W+Enterとかじゃなくて1つのキーで移動するようにしたいねぇ。
明日も宿直明け、雑用、本業、宿直のコンボ。待機時間でCametan42さんのアドバイスに従いマクロの基礎とSyntax-rulesだけは読んでおこう
2021/11/01
今日からアナザー宿直バイト。風呂掃除が予想外のしんどさだったが後で聞いたら壁は洗わなくて良いとのこと・・道理で・・ビショビショになりつつ1時間以上かかり、その後全館の階段・廊下のモップ1時間。いや~・・これは良い運動になる(^o^)!そしてなんと宿直ルームには無料のWiFi完備。冬は暖かく夏は涼しいと光熱費の削減にもなるしナイスです!
で、就寝までの間にCametan42さんから教えていただいた「On Lisp」の無料日本語版を読む。なんて期待を煽る前書きなんだ!これは頑張って身につけようという気にさせますねぇ!マクロか・・期待。
ほぼ見るだけだけどScheme入門を最後まで。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
非決定性・・なんか凄そうなんだけどこの前の単元の「継続」とかもちゃんとやってないし全然理解できん(^o^)。今週の金曜日が図書館の借り出しリミットなので、それまでにもう一度「継続」から、「お気楽Schemeプログラミング入門」とか「独習Scheme三週間」とかも合わせて読んでやり直し・・と言うことで。
ちなみに「12歳~」は最後まで読みました!クラスとか参考になったのと独自のルール(タグ的なものを埋め込んだもの)で書いたシナリオファイルを用意して、それを元にアドベンチャーゲームを作るというのは参考になったなぁ。あ、そういうわけでLISPで再現って実験まで「12歳~」は中断です。打ち切りエンドじゃ(多分)無いよ。明日はバイトデーやけどスキを見てScheme入門の継続あたりからのおさらいをしよう。
2021/10/31
もう10月も終わりか~・・実は僕にとって個人的に非常に意味のある事だったのですが、まあ置いといて・・今日も忙しかったの!昨夜は12時まで出張で、今朝は7時から19時まで施術で、そこからハロウィンのゲーム大会(と言う名の他所のご一家の招待)に呼ばれて・・まあ言い訳です。またScheme入門がちょうど難しいところに差し掛かってるものだから・・ウィルパワーって一時期話題になりましたけど、ホント、MPが枯渇してるとプログラミングの勉強とか無理とちゃいますかね~。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
寝る前にちょっとでも・・と言うことでCPS引き渡し方式をチェック。関数名K*とかK+と引数Kの名称に関連があるのかと気になったので名前を変えたけどちゃんと動作したので納得。とりあえず今は「こういうのある」というのを覚えておくに留めるか・・。必要とならないとやっぱり身につかないだろうし・・
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
こちら今回からR6RSとなっております。なるほどこのせいでFilterが使えなかったのか・・前に他所のページの別解答を入れたのに動かなかった謎が解けました(^o^)
明日はとりあえずScheme入門をラストまでさらって、12歳~を出来れば終えて夜は別の宿直バイトなんでクロームブック持ち込んでCametan42さんの解説の復習をさせていただくか・・
2021/10/30
宿直明け、午後と夜から施術の仕事が入ってついに日記開始から初めてRacketを開かない日が来てしまった・・(言うまでもなくVSCも)。
ちょっとでもプログラミング関係の物事に触れておかねば・・ということで寝る前に「ぷらぐらAIチャンネル」の動画を見る。ちょっと前にチャンネル登録をしていたのにほとんど見てなかったので。いや~面白い!登録者少ないけど。
あと、WikiでHaskellの項目をちょっと調べる。ほえ~・・数学のページかな?数学・・漢字が読めないと小説が楽しめないように、数学がわからないと楽しめない世界が広大に広がってるはずで大いなる憧れ。まあ、ジワジワやっていきますか・・
Scheme入門を一瞬だけ
あ、これがCametan42さんのところであったCPS方式かぁ!ほうほう、返り値を任意の宛先に送ることが出来るのかな?これは便利そうな気がする。しかしここまで、明日は朝7時から夜7時まで詰まってるんで
2021/10/29
今日はスーパーバイトデー。別地域のマンション清掃の説明を一通り受けてから一人で全部清掃。気楽で良いけど結構疲れたな~・・これは健康になる。夜は宿直、すごく眠れたw。
朝からバイトだったので夕方にちょっとだけScheme入門。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
入出力、代入、文字列、シンボル型、連想リスト、ベクトルと構造体、構文の定義、継続・・と、読んでいくが練習とかをやる気が湧かない・・まだ必要ないというか・・疲れてただけかも知れんけど。Syntax-rulesは便利そうだったかな。いや、実は駆け足にならないといけない理由が出来たんですよ。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
朝、メールのチェックをしたら図書館から予約していた「On Lisp」が届いたという連絡が! やったぜ! あれ・・・?
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
で、夕方には更に・・・まさか一気に届くとは・・・引取りまで猶予が一週間あるので、これからの予定としては
1,12歳~をザーッと終わらせる
2,Scheme入門をとりあえず一度最後までザーッと終わらせる
3,図書館から借りた本を優先度をつけて読む
4,むちゃくちゃ気に入ったら買う(セコい)
と。
そしてCametan42さんから教えてもらってる部分をちゃんと復習しないと!今回も↓
Beginに関しては、そうか・・最後のAmountも「口座内の数値を表示する」って事ですもんね。
あとAbsですが!Mapで更に囲う、そ、それだーっ!イメージしてた方法です。なんでMapの勉強してるところなのにMapを思いつかなかったかな~・・
それとSchemeのバージョンですけど、そうだったんですね!別に敢えてレガシーなのを狙ったわけではなくてネットで見た時にR5RSを選ぶってのが導入の仕方であったもので(最初使ったときLISPないやん!と思いました)多分かなり昔の記事だったんだと思います。RacketLunguageが最新だったのか・・あと確かに起動がむちゃくちゃ時間かかる割りには動作がシンプルなので不思議だなとは思ってました(^o^)
2021/10/28
今日は新宿直バイトの研修でした。これは神バイトの予感・・膨大な待機時間を使ってプログラミングの勉強が出来る!
居はScheme入門に時間を使いすぎてしまって「12歳~」はお休みする。クラスとかなってきてるからリストが膨大なんですよね・・で、12歳~は別の市の図書館から借りてもらってるのでLISPで再現は一通り解説を読んで本を返却した後になりますかね・・(コードなんかはDLできてるので)。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
今日から高階関数に突入。MapとFor-eachの違いという話なんだけど、For-eachは副作用を目的とする・・?データの改変を行うってことだよな・・変数Sumに結果を入れると・・馴染み深い形。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
じゃあMapでやったらどうなんのかと思ったら・・むっ!?なんだこれは・・まあ、一応合計は出とるが・・
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
練習問題をやりまして~。ただ「差」を表すってことは絶対値じゃないといけない気がするので絶対値にするには・・条件分けで出来るけど関数的なもので一発変換できないのか?と探してAbsを知る。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
MapをAbsで囲うのは無理~か~・・
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
Setで結果を新しいリストに入れることは出来そうなので、出来たリストに対してAbsはどうか?
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
駄目だ~。もう良いやw 追加する時にIfで条件ワケするってことで
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
Filterの問題で偶数だけを返すというの。割った余りを出す計算が%じゃないんだな・・と探すのに苦労する。と言うか日本語のSchemeページって少ないんですねぇ・・(^_^;)
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
本日のハイライト!銀行口座を作る。こ、これは・・!たったこんだけの記述で!?これが高階関数の威力か・・・感動した!
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
練習問題。問題はBeginだ・・。説明では別の命令をまとめて書くということだったんだけど・・この例では後にはSet!しかないよな・・Amountは違うし、くくる必要がないじゃないか
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
でもBeginを外すとエラーになってしまう!ぬぅぅ・・。Scheme Beginで調べても本当に解説ページが出てこないんだよなぁ・・。ま、明日以降に持ち越しだな!
2021/10/27
いよいよ今日から再帰の次へと・・と思ったけど再帰の続きが残ってたか。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
名前付きLet。うーん・・これって意味あるんかいな・・あと名称もLoopって使ってるから専用のシンボルかと思ったら何でも良いんですね。なんかやる気が湧かねぇなあ
一応やってみた。慣れたら便利かもだけど・・これだったら普通に末尾再帰で出来るしなぁ・・
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
Letrec。うーん・・つまり関数の中でその関数に引数を渡せるということ?これは必要そうかな?
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
別のページの解説が分かりやすかった。なお、この解説ページはもはや更新されておらぬ模様、残念
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
do。名前は聞いたことあったけど、なんかこれは面白そうじゃないか!?まあ問題はSchemeにのみ存在するような・・応用の効かないようなのは覚える気が起きないってことですかねぇ・・。いずれCommon Lispにも行くわけだし、どうせだったらプログラミングの根っこみたいなのを身につけたいな~と。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
do!(なんか)良いじゃない!
次回から高階関数。これは大事だろうからしっかりやろう!
2021/10/26
今日はスーパーバイトデー。午後からマンション清掃を3件ハシゴして、夜から宿直。清掃は狙い通り頭を使わずに出来るので清掃しつつ色々と考えたりする事が出来そうだ。実は結構掃除も好きなんだよなぁ。
そういうわけで本日は夜の「12歳」は無し。朝の早くと夕方の隙間にScheme入門で本当に再帰が出来るようになったかチェックや!
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
と、その前に気になってたSICPの両替問題を実際に打ち込んで弄ってみる。うぬぬ・・再帰の読み方が(多分(本当に))分かるようになったので流れは分かる気がするが・・なんでこの式で組み合わせ数が分かるのかが・・???まあ、ひとまず置いといて次にゆくことにする。
追記:Cametan42さんから詳細な解説いただきました! いつもありがとうございます!m(_ _)m
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
末尾再帰の問題。これが模範解答だけど・・俺ならこう書くぜ!
↓
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
(- n 1)が二箇所にあるのはちょっとダサめだけど。最初factiの引数pの部分は(* n p)で行けるのでは?と思ったら480になってしまったんですよね(5の場合)。ぬぅ・・第一引数のnが-1されてるから共用されるのかと思ったら独立してるんですねぇ(関数言語だから?)。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
これは模範解答と同じになってしまったか・・・
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
前は苦戦したけど引数の中身を書くってのが分かったので楽勝だガハハ!前は引数の中に式を書いて、その返り値が与えるだけってのが分かってなかったので、必死に(ここでは)nlsに代入的なことをしようとしてたんですよね。よーし、これでようやく次へ進める!
2021/10/25
Scheme入門で再帰。結局特定の文字列を抜かしてリストを返すという問題、模範解答が理解できてなかったのが引っかかっていたので、考え直す。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
うぬぬぬ・・・lambda (y) y は分かる。何もせずにそのまま返しておけと。で、lambda (y) (cons h y) のyの部分だけで (cons (h (h (h (h (h と積んでるのを表してる・・って事でオッケイか(まだ再帰が曖昧だ)
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
どうにも再帰がしっくり来ないので、また考える。特定のシンボルがリストの中で何番目に出てくるかという問題。模範解答だとリストの中に1つあるかゼロかという風にしか想定してなかったので複数あった場合にリストで返せるものを考えてやろうじゃないの、と。ところがこれが全然うまくいかない。
考え方はあってるはずなのになんで・・と色々とやってて突如分かった!そう、末尾再帰が全然分かってなかったという事に!!
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
恐ろしいことに今までの末尾再帰が動いていたのは「たまたま」ですw。Cametan42さんが「nlsにぶっ込んでる」と褒めてくれてたんですけど「???」って感じだったんですね。そうかそうか、関数の(上だと)「nls」に当たる部分を算出する式を書いたらエエんか!いやまぁ、ずっとそう言ってくださってたんですけど(-_-;) いや、今日こそは本当に分かった!今まで「どうせ動かないだろうなぁ~」とか「これで動くはずなのになんで!」とか思ってましたけど、初めて「狙って書ける」ようになった実感が出た!同じ様に他の引数で再帰の値を返したい時には何番目の引数でも同じ様にぶっこめばいいって事か(多分)
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
試しにもう一つやってみる・・と、やっぱりな!こ、これが末尾再帰(多分)! これで間違ってたら笑うんだけど、とりあえず明日は今までの例題とか片っ端から解いてみよう!やっと腑に落ちた~多分!
「12歳」は4章と5章を。4章途中から歯ごたえが・・・
2021/10/24
Cametan42さんからTkinterの概要とGUIビルダーとしてPAGEというのを教えていただく。Pythonのコードとして見れるのは良いですね!もっとコードを読まないとイカン!と思ってましたし。12歳が終わったら早速いじってみよう!今回も紹介のためにWindows実機で検証してもらったりとか・・ありがとうございます!
さて12歳の4章ですが・・夜、仕事終わりでやろうと思ったんですけど追加の施術が入ったりして帰宅して風呂に入ったら即オチ2コマで眠ってしまった・・明日こそはw
そしてSheme入門。今日は局所変数、つまりLETだったんだけど・・何これ便利すぎる!任意の変数を複数宣言・代入?して続けて式で計算・・しかし、これは・・これはまるでLambdaじゃないか!
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
あ、書いてあった。糖衣構文って言葉は覚えてるのでこれはリリカルLISPで糖衣構文の説明の時に出てきたと思われるな・・そして全然頭に入ってなかったと。
で、例文や練習問題をやろうと思ったんだけど
~~~~~~~~~~
~~~~~~~~~~
2次方程式の解の公式・・いや、なんとなく形だけは覚えている。けど、数学が嫌いになったのはこの辺りだし(早いよw)、ここは一発ちゃんと理解しておこう。
~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~
ルート計算、因数分解も怪しい。しょうがないのでリンク先の解説を読む。有理化!おお~こりゃすげぇや!とか。しばらく格闘してようやく戻ってきて解の公式の導出を理解しようとするが・・
~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~
うぐぐ・・なんでこうなるの?しょうがないので別のサイトで導出解説を読んだりして平方完成の説明を読む。ぬぬぬ・・・あ、そういう事か!分かってみたらなんで悩んでいたが謎になるほど。まあ、こうやって勉強をやりなおして行くのも人生100年時代には良いかな・・環境も汚染しないしお金もかかんないし。
あと、Cametan42さんの記事で教えてもらったけどSchemeって分数が使えるという!ええっ!?
~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~
ほんまや!
2021/10/23
図書館で借りた「プリンシプルオブプログラミング」を読み始める。な、なるほど~・・Cametan42さんが関数型言語を勧めてくれた理由と色々とリンクしてる気がする。
12歳からはじめるゼロからのPythonを3章まで進める。Tkinterの使いた方を知りたかったのでいい感じ。
Sheme入門を進める。今日は条件式・・なんだけど「逆数」って何w?とか。最後の(/ n)で出るのは分かるけど引数が1つしかないのもあるのか・・
ほえ~・・・引数3つ以上って掛け算とか足し算だと違和感ないけど割り算って見たことなかったな
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
驚いたことにRacketだとちゃんと「分数」として表示されるのであった。P6時代出身としては新鮮だ~
今更ながらだけど ○○以上 xx以下とかって一行で書けるんですね!便利だ~。とりあえず条件式は終わったけどIfとCond以外にも色々とあるんだな~Whenとか。まあ、いつか使う時になったらまた・・。明日からは局所変数ってことで。
Cametan42さんの「高階関数」を写経する(ブックマークして定期的にやろう)。再帰、末尾再帰、反復を比較出来るように書いてくださってるのは本当に助かるなぁ~。While True のループが不思議だ・・これって無限ループだけど関数内で使った場合はReturnで結果を返した時点で自動で抜けられるって事なんだろうか?便利すぎる!!
出先でちょっとSICPを読んでたけど例題の「両替問題」でいきなり分からない。これはムズいわ~・・思わず飛ばして読もうと思ったけど、いやいやちょっと待てと・・解説は読んでも分からないけど丁寧にコードを読んでいけば逆に理屈が分かるかも知れん。明日はRacketで打ちながらアルゴリズムを解読してみるか・・
夜、Cametan42さんの最新記事「クラス入門」を読む・・いや、読ませていただく。面白すぎるw そして為になる!うーん、毎回気合の入った記事で頭が下がるんですけど今回のクラス入門はちょっとクオリティが凄すぎるのではなかろうか・・当然ブックマークしました。ありがたく学習させていただきます。構想中の「海原雄山@ハンバーガーショップ」で活用させていただかねば。
2021/10/22
バイトの面接成功、来月から宿直が1日増えるぜガハハ。おまけに施設内で施術とか勉強会の依頼があるかも?ほぇぇ願ってもないこと(^o^)
Cametan42さんのブログを読み進める。とりあえず高階関数についてようやく知る。は~Reduceがすごすぎる。これはちゃんと使えるようにならんと!
Schme入門をやる。今日は条件式だったけど練習問題が等比数列。意味は分かるけど等比数列の和の公式とか言われても記憶にございません・・折角だし数学解説のページで勉強するw
~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~
は~なるほど~・・公式の導出って言うんでしたっけ?面白いですねぇ。
~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
で、なんでかそっちの練習問題を解く流れになるが・・・おっ?これは前に言われていた数学の問題を式にしてみるチャンスだな
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
おお、ちゃんと和になってる!
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
そんで等差数列から階差数列とかになって・・ってやってたら時間が来て終了。
ま、まあ数学はいつかちゃんとやらんとイカンと思ってたのでエエか
2021/10/21
図書館で予約しておいたプログラミング本が到着したというので受け取りに行く。
GUIで実際にゲームを作りつつ学ぶというもの。久々にPythonを触ってみるか!「12歳からはじめる」ってところが気になるが48進数かも知れないだろ!だったら僕にはまだちょっと早目なくらいだしセーフ。前に入れてて消したMSのVSCを入れるところまでやった。
Cametan42さんのブログを読み進める。
~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~
ふあ~なるほど~・・そういう考え方か!そしてZIPの機能をようやく理解(した気が)する。
~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~
丁度切らしてた!ここまで丁寧に説明してもらえば僕にも理解出来そう。まあ、実際に出来るかは練習問題を解いてからだけど。
~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~
恥ずかしながらミュータブルの意味もようやく分かった。ああ、ミューテーションのミュータだったのか!そらキーが変更されるようでは困りますもんね。
Scheme入門の練習問題を少し。関数まで終わったので明日は条件式からやな。バイトの面接もあるしバイトもあるしでちょっと忙しい。
そして眠る前にニコニコ動画だ。いつもはゆっくりRTA動画なんかを見ていたけど、これからは読書も動画も出来るだけプログラミング関係のばっかりで埋めるで!と。「春香さんがLISPに興味をもったようです」シリーズを発見、見る。最後のAIボンバーマンはちょっと感動、こんなのも出来るのか!
2021/10/20
大学時代の先輩と「007」を見にゆく。とにかく前半が面白すぎる!パロマのスピンオフあるんなら嬉しい。Qがゲイキャラになってしまっていた・・LGBTキャラを入れないと苦情でも来んのか?
Cametan42さんのブログを読み進める。
~~~~~
~~~~~
この部分、ハッ!とした。確かに・・「出来るやつ」ってのは佇まいが違うわけだけど、同じような事がコードで存在してもおかしくないな。そう考えるとやっぱり美しいコードの写経って大事っぽいなぁ。
読んでばっかりってのも問題なので練習問題のついてる「Scheme入門」のサイトの「コンスセルとリスト」から読み返して練習問題を始める。基本がなってねーよ基本が
2021/10/19
前から気になっていたCametan42さんのブログの「プログラミングカテゴリ」を古い記事から拝見してゆく。最初期にLISPで出来ることちゃんと書かれてて汗。Racketを使って外部のライブラリを読み込んで・・というのも拝見、そういうのも出来るのか!そらそうか・・
記事で「Scheme入門」を参照って部分があって、そこからちょっと練習問題に手をつけ始めてしまう。実際、なんのヒントも無しでLISPのプログラムを書ける気がしなかったので一度やってみるか・・再帰(と言うかこれは反復?)を使ったリストの合計関数を作るというもの・・出来た!嬉しい!
解答例はこれ。あ、こんなにシンプルに出来るのか・・
続いてリストから特定のシンボルを取り除いたリストを返すというもの・・うぬぬ・・新しい空リストにCONSで追加してゆけば・・と思ったけど空リストは()で入ってしまうし順番が逆だ~・・Appendのときのを読み返せば分かると思うけど時間がないしこうなれば・・
まあ()は置いといてReverseで最後だけ逆向きに出力してやるわw。あと途中のNotは使い方の練習をしようと思って。しかし僕は代入が好きなんだなぁ・・と。
回答例(Scheme入門のはLambda(y)とか謎の書き方だったのだけど別の質問ページで理解しやすい書き方のがあったので丸写し。あ、なるほど・・XがあったらCDRで飛ばしたリストを返せば良いか・・なるほどねぇ・・
あと、バイトの待機時間にツイッターにて「LISP」で検索したらニコニコでのCommon Lisp講座がヒットした。9月の末から始まったシリーズのようで実にタイムリー!けどGithubとか・・縁がなさそうだしな・・
2021/10/18
今日は新バイトの初日で緊張したのか?夕方からすごい疲労感。これは文章を読んでコードを書いてとか無理かな・・ということで流行りのYou Tubeで「LISP」とかで検索して動画でも見てみる。あんまり良いの無かったw。あと、マンガでわかるLISPというのを発見して読む、マンガ部分が不要なような・・。
更にCametan42さんから「一通りザーッと読んどく」ようにアドバイスを受けた関数プログラミングの論文(?)を「いくらなんでも」ってくらいにザーッと読む。スマホだとコード部分の文字が異様に小さく表示されるのでw。遅延評価の意味がようやく分かる。あと、機能をとにかく小さなブロックにしてとか・・なるほど~ Cametan42さんの例文ってどんだけ小さくてもdefの形にされてたもんな~と。いつかPaizaの問題を全部リスト内包表記で書くってのもやってみようか・・
夜、気力がちょっと回復したのでClispとXyzzyの導入と環境設定を行う。はぇ~・・Windows使い始めて27年、こういうの初めてやった。
2021/10/17
仕事の待ち時間でSICPをちょっとだけ読む(読み物として接する事にしたのでPCがいらない)。再帰の部分CommonLispの検証の展開図の意味がやっと分かる。後半は展開したのを内部のカッコから戻していってるってことかw。
再起と反復という表現に出会う。あ、違う概念なのか・・え?末尾再帰って反復(カウンターをつけて云々)って事なのかw。うーん、断然末尾再帰派やな。
Cametan42さんのブログを拝見する、ありがたすぎる・・以前書かれいていた「フィボナッチ」とか「高階関数」とか・・全然読んでなかったのが申し訳ない。過去のプログラミング記事で復習させていただこう。