Object.create(null)

TypeError: Cannot convert object to primitive value

式年遷宮メモ

  • ES6 以降で書きなおしたい
    • 読みやすさ
  • モジュールごとに package 分けたい
    • 各モジュール (ファイル) が肥大化しすぎて扱いにくい
  • テストのファイル分割したい
    • 関数ごとにファイルわけないとひどい (現状)
  • エラーメッセージの localization
  • 機能追加
    • 正規表現で簡単に書けることくらいは標準で提供したい
      • .{n,m} とか
        • ただし私自身はわざわざこれを使いたいという場面に出くわしたことがない
    • インデントでブロックを表現するタイプの言語のパース簡単にできるようにしたい
  • token parser の書き直し
    • あまり考えずに移植したせいで, 想定された使い方と実際にどう使いたいかに乖離がある
    • 例えば文字列リテラル stringLiteral
      • 現状 Haskell に寄り過ぎ
      • JS や JSON の文字列をパースしたいという機会が多い
      • クォートも Perl みたいに柔軟に指定できるようにしたい
      • string literal の中身だけ, みたいなものを作る?
      • 全て満足するのは難しそうなので, 自分が満足する程度で
    • どうせ JS だし naturalOrFloat は微妙
      • 多倍長整数にできるように文字列で返すとかならまだわかるが, integer にその役割を任せて良さそう
    • そもそも作成時点で引数が何に対応しているかわかりづらい
      • Haskell ならコンパイルエラー出てわかるけど JS だと何か書き忘れててもすぐにはわからない
  • 高速化
    • ParseError を遅延評価
      • パースが成功した時は大体 ParseError は要らない
    • 他何か思いついたら
    • PEG.js と同等程度になると使ってもいいかな感が出るけど, そこまで高速化する策は今のところない
      • 現状 3 倍程度遅いです
  • インターフェースの変更
    • Promise のせいで .then() に関数渡したくなりがち
    • manyChar()manyChars() とか