Schemeコードバトンに参加しました

第1回 Scheme コードバトンのお知らせ - higepon blog

  • やったことは、higeponさんのコードがmosh用だったので、Gaucheで動くように最小限の変更を加えただけ
  • 第一印象で「breakのためだけにcall/ccを使ってるんでこれは削除できるなー」と思ったんだけど、自分の技量では泥沼にはまる気もしたので、とりあえずパス
  • moshでやりたい人はhigeponさんのをベース、Gaucheでやりたい人は私のをベースに書き換えるとよいと思います
  • ということで、最初の書き換えとしては妥当かな
  • 変更点
    • 読み込むライブラリをGaucheのものに変更。といっても必要なのはmatchのためのutil.matchだけ
    • (file->sexp-listはGaucheではfile.utilに用意されてるんだけど、こういうのは実装が見えてた方がいいだろうということで、higeponさんの実装をそのまま残した)
    • R6RSのlist-sortとGaucheのsortは引数の順序が逆なので、引数を入れ替え
    • SRFI1のsecondをcadrに変更(これはやらない方がいいかも)
    • 角カッコの対応が合ってなかったところを1個所修正
    • 入出力をコードの順番通りに行うためにflushを2個所追加
    • call-with-port+open-file-output-portをcall-with-output-fileに書き換え