AZALEAと学ぶScheme入門

ときめき情報学
 
関数型プログラミング言語Schemeの基礎を学びます。


ダイヤ「えー、それでは私たちも、伝説のスクールアイドルμ'sの伝統に則りプログラミングを学びますわよ!」
花丸「おー、ぱちぱち」
果南「はぁ・・・また始まったよいつもの病気・・・」
ダイヤ「病気とは何ですの果南さん!貴女もスクールアイドルになった以上は自覚が必要ですわ!」
果南「あー、はいはい・・・それで?」
ダイヤ「こほん・・・常々私たちAZALEAと比較されるlily white、園田海未・星空凛・東條希のユニットですが、彼女たちが学んでいた言語は・・・はい、花丸さん!」
花丸「ずら!?・・・ええと、なんか回復薬みたいな名前だったずら」
ダイヤ「正解はElixir、今をときめくかしこいかわいい関数型言語の花形ですわ。ならば私たちも、そこへ至ることを目指さねばなりません!しかし」
果南「いや、それ必要?」
ダイヤ「果南さんはこのサイトの存在意義に自覚を・・・いえ失礼、なんでもありませんわ」
花丸「メタな発言出たずら・・・」
ダイヤ「とにかく、Elixirのような関数型言語は数多くあります。Common Lisp、Scheme、Haskell、Clojure、Emacs Lisp、Scala・・・」
花丸「うーん、聞いたことないのばっかり」
ダイヤ「その中から今回は、Schemeを取り上げたいと思います。これはLisp系の言語の中でも最もシンプルで、情報学を学ぶ者には一般教養ですわ」
花丸「ダイヤさんの言う一般教養はレベル高いから・・・僕今でスキップしてる4人を即答できる人は相当訓練されてると思うずら」
果南「ダイヤ、そんな話してたの・・・? うわーさすがに引くわー」
ダイヤ「そっ、それは・・・ええい2人とも、それは今すぐ忘れるのです!」


ダイヤ「SchemeはSICPで題材に使われている言語として有名ですわ」
花丸「SICP?」
ダイヤ「Structure and Interpretation of Computer Programs、略してSICP。MITで教科書として用いられている名著です」
果南「またハードル高そうなの持ち出してきたね」
ダイヤ「まあ、初年度の教科書ですから、そこまで構えてかかる必要もありませんが・・・とはいえ、決して簡単なものでもありませんわ」
果南「だよねぇ・・・」
ダイヤ「ですから、そのSICPを読める程度の知識をつけるべく、この場で勉強してみたいと思うのです」
花丸「そっかあ、本が読めるなら、マルはがんばるびぃ」
ダイヤ「・・・うちの妹が、何か変なのを吹き込んだようですわね」
果南「ダイヤッホー」
花丸「ボンディーヤ!」
ダイヤ「お、お黙らっしゃーーーーーーいっ!!」


ただいま連載中!

Part1: 環境構築

ダイヤ「それでは手始めに、環境構築から始めますわ。必要なものはSchemeの処理系とテキストエディタ。簡単ですわね」 果南「エディタはともかく、処理系っていうのは?」 ダイヤ「Schemeというのはプログラムを記述する言

Part2: Hello, world

ダイヤ「さて、今回は簡単なコードを書いて動かしてみますわ。Schemeプログラムの実行方法を覚えてください」 ダイヤ「プログラムというのはファイルに書いてそれを実行することが多いですし、Schemeでももちろんその方法は

Part3: 真偽値

花丸「ブール代数に悩むシェイクスピア。生きるべきか、死ぬべきか、それが問題だ」 果南「お、さすがだね」 花丸「えへへ・・・文芸なら得意ずら」 ダイヤ「ええ、今回はまさにそのブール代数の基本となる真偽値を見てみますわ」 ダ

Part4: 数値

ダイヤ「今日は巻きでいきますわ」 果南「ん、何かあるんだっけ?」 ダイヤ「果南さん、貴女は狩野川花火大会を存じませんの!?」 果南「あー、淡島に引きこもってると沼津の事情に疎くなってさ・・・」 花丸「今日は7/30ずら」

Part5: 文字と文字列

ダイヤ「沼津の祭は素晴らしかったですわね」 花丸「人が多すぎて眩暈がしたずら・・・」 果南「屋台もいいけど花火もね」 ダイヤ「浦の星研究会はいい仕事してくれましたわ」 ダイヤ「さて今日は文字と文字列について見ていきますわ

Part6: シンボル

果南「一昨日は千歌の誕生日だったんだよね」 花丸「おめでとうずらー!」 ダイヤ「あなたたち、千歌さんの誕生日も良いですけど・・・昨日今日が何の日かお分かりですの?」 花丸「ちなみに今日は8/3ずら」 果南「いや、えーと・

Part7: ベクタ

ダイヤ「初っぱなの小咄もネタがなくなってきましたわね」 花丸「5話の果南さんかわいかったずら・・・とか」 果南「・・・マル、おねーさんさすがに怒るよ?」 花丸「ひっ・・・ご、ごめんなさい・・・」 ダイヤ「果南さん、それは

Part8: コンスセル

ダイヤ「今回からリストの解説に入ります。Schemeに限らずLisp語族の根幹になる概念ですから、耳の穴かっぽじってよく聞くとよいですわ」 果南「うわー・・・」 ダイヤ「・・・失礼、私にあるまじき発言でしたわね」 花丸「

Part9: リスト

ダイヤ「UOを!ありったけ買い占めますわよ!(鞠莉さんの金で)」 果南「ダイヤ、気持ちは分かるけど落ち着こうか」 花丸「夢で夜空を照らしたい、あの曲はブレードの明かりくらいでしっとりやってほしいずら・・・」 ダイヤ「私は

Part10: 変数と手続き

花丸「さっきゲーマーズ町田に寄ったら、6話を受けて『今週の松浦果南ちゃん。』コーナーが大勝利状態だったずら」 ダイヤ「花丸さんの家から部室へ来るのにどうやったら町田に寄れますの・・・?」 果南「先週の5話は・・・いや、別

Part11: 条件分岐

ダイヤ「・・・というわけで、浦の星女学院の募集枠は100名。今年の志願者がこれに満たなければ沼津の高校と統合ですわ」 果南「・・・昨年の志願者数は?」 ダイヤ「・・・志願者14名、合格者12名ですわ」 果南「・・・7倍に

Part12: 直列化

果南「・・・・・・」 花丸「か、果南さん、その・・・待てば海路の日和あり、ずら」 果南「・・・・・・」 ダイヤ「・・・わ、私だって、今の状況は本意ではありませんわ・・・」 果南「・・・・・・」 花丸「・・・・・・」 ダイ

Part13: ローカル変数

ダイヤ「これまでdefineを使って定義したグローバル変数を扱ってきました」 果南「プログラムのどこからでも見える変数だよね」 ダイヤ「はい。ですが、変数の有効範囲を局所化することができます。名前の衝突を避けるなどの理由

Part14: 再帰

ダイヤ「祝!」 花丸「果南さんの出番!(8話)」 果南「出番があっただけで祝われるってのも、ちょっとなあ・・・」 ダイヤ「いよいよ闇を抱えた真のヒロインという感じが出てきましたわね」 果南「いや、ヒロインって・・・そんな

Part15: ファイル入出力

ダイヤ「というわけで実用編いきますわよ」 果南「ファイルの読み書きができれば使い方の幅広がるもんね」 花丸「がんばルビィずら」 ダイヤ「混ぜないでいただけます?」 ダイヤ「はじめに、ファイル入力、ファイルの中身を読むとこ


LINEで送る
Pocket


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です