AWS で新規にアカウントを作成すると最初から『デフォルト VPC』が設定されている。
ただそれだけ。
Scheme にある number?
と complex?
という手続き。
number?
: 引数が数値であるかどうかcomplex?
: 引数が複素数であるかどうか(number? x) => #t
かつ (complex? x) => #f
の数値ってあるのかな?と思った。
リファレンス(6.3.2 数値に関する述語)を見るとまさに解答が書かれていた。
Gaucheでは、数の集合は複素数の集合と同一であり、...(略)
「Gauche では、」ってことは他の処理系ではそういう数値があるのかなぁ?
仕事で Flutter をちょっといじっていて、いい加減 async あたりをちゃんと理解しておこうと思ったのでメモ。
https://dart.dev/tutorials/language/futures
Dart は基本的にシングルスレッドで実行される。 並列処理を行いたい場合は Isolate を利用する。
Future は非同期オペレーションの結果を表している。 ここは Java と同じだね。
async
関数で await
を使うvoid main() async { await something(); print('all done'); }
await
を使うためには関数に async
を付与する必要がある。
async
関数では以下の条件のいずれかを満たすまで同期的に実行される。
以下のどれかにたどりつくと Future を返し、非同期的に実行される。
await
return
文await
のあれこれawait expression
の expression
は通常 Future を返す関数である。
しかし、expression
が Future を返さない場合は、自動的に Future でラップされる。
なお、await expression
文自体は Future の完了した値を返す。
import "dartd:async"; void main() async { // 自動的に Future にラップされ、Future の完了値 int を返す int i = await something(); print(i); } int something() { return 1; }
完了を待ちつつスレッドをブロックしない、っていうのが await で気楽に使えるのはいいなぁ。
関数を部分適用したい時に使えるらしい。
例えば、
二つのパラメータを取る cons。片方のパラメータを 1 に特殊化したい。
そういう場合には、
(cut cons 1 <>)
と簡潔に書くことができる。
cut 式は実際には lambda の糖衣構文。
(lambda (x) (cons 1 x)) ; = (cut cons 1 <>)
たしかに cut 式の方が簡潔にかける。
ちなみに名前にこれぞという語源はなさそうだ *1。
7章はちょっと長かったな。以下はメモ。コードはこちら。
プログラミング Gauche の4章〜6章のメモ。ちなみにコードはここ。
過去二回挫折した Gauche/Scheme の勉強を再開したいと思う。
今までは少しストイックに勉強しようとしすぎて挫折してしまったきらいがあるので、ゆるく進めていこうと思う。
ついでに、Evernote にまとめたメモも載せていこう。
久しぶりの投稿。というか今年初投稿だ…。
日本軍の失敗の本質は『陸軍の白兵戦思想』と『海軍の艦隊決戦』という過去の成功体験から逃れられず、組織が過度に適応してしまい、変わりゆく環境に適応できなくなってしまったことにある。
本書の言葉を借りれば
適応は適応能力を締め出す
ということ。
全体としてちょっと冗長で読みにくかったかな。 戦史って文字で読んでも全然頭に入ってこないね。
あと、漫画のジパングでよく見た人物がよく登場した(当たり前)。 ジパング読んでた時にはあまり理解してなかったけど、この本を読んで、大本営、参謀本部、軍令部、陸軍省、海軍省あたりの違いが理解できた。
(c) The King's Museum