見出し画像

Retro-gaming and so on

RE: プログラミング学習日記 2022/09/12〜

星田さんの記事に対するコメント。



 お手本を手打ちさせてもらって復習。注目だったのはLetとMatchの合わせ技でしょうか・・なるほど〜・・全く考えつかなかった。やっぱりいろいろなコードを読むって大事ですねぇ!

実は今回は星田さんがmatch覚えたばっかなんで使わなかったんだけど、Gaucheにはmatch-letと言う構文があって、それを使うともっと短く書けます。
その名の如く、上のようなletmatchの連携を一気にやってしまう構文。



まぁ、前バージョンみたいにlstと言う変数を作ってそれを使いまわしする、ってワケにはいかないけど、仕様に含まれないにせよ、こんな構文が用意されてる、って事はletmatchのコンビはある程度頻出だ、って事になります。
ある程度matchに慣れたらmatch-letにも挑戦してみよう。また、これがPythonのアンパックに一番近い気がします。
なお、Racketにもmatch-letは用意されてます。


 折角の便利機能なのにこの例文は意味無いんじゃないでしょうかねR7Rs(^_^;)

ホンマやねん(苦笑)。
っつーか、そうやってツッコミながら読むのが正解だと思う(笑)。

こうね、クソ真面目になって根を詰めて読んじゃダメなんだよな(笑)。少なくとも権威ある仕様書ではないわけですしおすし(※1)。
どーせ、これから何度も読む羽目になるんで、テキトーに流しつつ、ツッコミながら読む方が脳にはいいと思ってます。
まぁね、今のトコ実装側に回るわけでもないですし。
軽く読んでいきましょう。

※1: 何度か書いてるが、「権威ある仕様書」とは、日本では日本産業規格(JIS)、アメリカでは米国国家規格協会(ANSI)、国際規格ではISO等で審査されて通った仕様書の事だ。Schemeの現行仕様はこれらを通ってない。
一般に、「標準化したい言語」はこれらの機関を通すか、あるいは機関側で作った「委員会」で言語仕様を規格化し、厳密にその意味を定める。従って、Schemeと違って、その規格に最低限従わない実装はその言語名を名乗れない。逆に言うと、その「公式仕様」に従った処理系間では、最低限それで書いたプログラムのソースコードのポータビリティは保たれる、と言う事だ。
一方、これらの「委員会方式」での審査、あるいは仕様の決定は物凄く時間がかかる。そのせいで、近年では、もうちょっと緩い「国際規格」を通した方がエエんちゃうの?と言う流れがチラホラ出てる。
例えばJavaScript(正式名称EcmaScript)はISOは通ってないが、代わりにECMAを通している。これにより、元々Mozilla(と言うかNetScape)が開発したJavaScriptとマイクロソフトが作ったJScriptは互換性が保証されるわけだ(厳密な意味では、マイクロソフトのブラウザで動いてる実装はJavaScriptではなく、EcmaScript実装の「製品名」JScript、って事になる)。
また、C及びC++言語にはISO規格があるが、C#言語はISO規格もあるがECMA規格もある。と言うか、ISOは採択に時間がかかるので、先にECMAを通してから、ISOが成立するのを「待っていた」と記憶している。
C#はJISでも採択されているが、これはECMA/ISO C#に準じている。
いずれにせよ、「権威ある公式仕様」が制定されてる以上、もし、貴方がC#を実装したら完全にそれはC#実装として市場に認められるわけだ。
そして、一旦「権威ある公式仕様」が制定されたらそうそう簡単に変更は出来ない。平たく言うと、仕様変更は慎重に「後方互換性」等をテストしつつ審査が行われる。既に広く使われている「それ」で書いたプログラムが仕様変更でとんでもない動きをするのを避ける為だ。
とまぁ、そういう「保証」が「権威ある仕様書」が成してる事だ(言い換えると、同じ国際規格でもECMAはその辺の「保証」も緩い、って事だ)。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「RE: プログラミング学習日記」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事