courseraの「programming languages」の感想

約10週でstandard ML ・racket・rubyを学習する講座を今受講しているのですが、6週でracketまで終わったので、感想を書いておこうと思います。
standard ML
静的関数型言語の元祖でscalaの直系の祖先。
授業は
1週目 肩慣らし
2週目 パターンマッチ
3週目 高階関数
4週目 モジュールシステム
といったところでしょうか。シラバスをみながら書いていますが、よく覚えていません。
1週目の宿題はパターンマッチ禁止で、関数型に不慣れな人も対象にしてるように思いますが、再帰関数は最初から登場します。
個人的には2週目でつまづいて、100点中6点という悲惨な結果になってしまいました。続く相互評価のための解答提出も締切りを忘れていてできずじまい。
このコースのプログラム演習は自動採点と相互評価のために二回答案を提出して、相互評価をしないと模範解答を見ることができないシステムになっています。なので、点数は悪くてもアップロードした方がいいです。プログラム演習に取り組むこと自体に意義があるんだから。(と自分をはげましつつ。)
課題提出→人の答案を採点→自己採点→人の評価を見る、と何度も復習して理解を進める形になっていて、相互評価自体も素晴らしさも含めて、よくかんがえられたシステムだと思います。
●racket
schemeの派生言語。schemeLISPの一種。LISPは動的関数型言語
1週目 基礎からstream、thunk、メモ化まで
2週目 インタプリタ作成
standard MLに比べるとペースが滅茶苦茶はやい。schemeも括弧の場所を間違えたりして結構たいへん。
ただracketはschemeにはないstructという機能があって、パターンマッチ的なことができます。なのでよりstandard ML的にプログラムできます。それでこその4週・2週という構成なんだろうとお思います。
なんといっても山場はインタープリタ作成。ほとんどLISPLISPを実装する感じ。レキシカルスコープで再帰関数もサポートしています。TWITTERで「#proglang」を検索してもhardとかbrutalとか出てきます。でも出来れば達成感は半端ない。ホント一週間かかりっきり。終わってみれば、問題文・ビデオで丁寧に誘導しているのがわかるけど、最中は五里霧中。もともとあったコードと含めて、100行程度です。structのお陰で、全体の構造は捉えやすいコードができると思います。
rubyというと比較的とっつきやすいイメージが強いのですが、これをふまえてどう展開していくのかが楽しみです。