Object.create(null)

TypeError: Cannot convert object to primitive value

キーワードの組をハイライトする Atom 拡張を作りました

こんにちは, 自分のことをピカチュウだと思いこんでいる一般人です.


作りました. 標準の bracket-matcher のキーワード版ですね.

atom.io

こんな感じにカーソル位置のキーワード (struct) と対応するキーワード (end) がハイライトされるです. ハイライト以外にも対応するキーワードへのジャンプとかもできます.

f:id:susisu:20180923160123p:plain

特定の言語用には作っていないので, 各言語ごとに config.cson を編集してキーワードを設定する必要があります.

例えばシェルスクリプト用:

".shell.source":
  "keyword-pair-matcher":
    keywordPairs: [
      "if..fi"
      "case..esac"
      "for..done"
      "while..done"
      "until..done"
      "select..done"
    ]

OCaml 用はこんな感じ:

".ocaml.source":
  "keyword-pair-matcher":
    keywordPairs: [
      "begin..end"
      "for..done"
      "while..done"
      "struct..end"
      "sig..end"
      "object..end"
    ]

Ruby とかにも使えるかもしれませんが, 後置 if に対応していないので if..end とか追加すると破滅すると思います. 使う場合はよしなにやってください.

気がつけば Scala を書いていたので読んだものを列挙するよ

私が読んだものを読んだ順に列挙しているだけです. たぶん何の役にも立ちません.

Learn You a Haskell for Great Good!

Learn You a Haskell for Great Good!

Haskell の入門書. いや冗談ではなく. 代数的データ型とかモナドとか, まあ役に立たなかったことがない.

英語版は上のリンクから無料で読めてお得です. 私は日本語版書籍の方を読みました.

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

Types and Programming

Types and Programming Languages

型システムの入門書. だから冗談ではなく. Scala の subtyping まわり色々あって最初見たときよくわからんって感じだったけど, これ読んだあとだと大体のことはそれはそうという気持ちになる.

日本語版書籍もあります.

型システム入門 −プログラミング言語と型の理論−

型システム入門 −プログラミング言語と型の理論−

How to make ad-hoc polymorphism less ad hoc

https://homepages.inf.ed.ac.uk/wadler/topics/type-classes.html#class

型クラスを提唱した論文. implicit 引数で型クラス表現するのそれはそうという気持ちになる.

研修テキスト

github.com github.com

ここまで読んでくると素地ができていると思うので (本当に?), あとはツールの使い方や細かい文法を勉強すればだいたい書けるようになる (本当に?). どちらも似たようなことが書いてあるので片方読んでおけば良いと思う. 後者のほうが体裁が整っていて読みやすい感じ.

Hishidama's Scala Memo

Scalaメモ(Hishidama's Scala Memo)

このあたりは読んでおいてよかった:

API ドキュメント

www.scala-lang.org

それはそう.

おまけ: DOT

github.com

DOT は Scala 3 の理論的土台として設計されているけれど, Scala 2 のような言語をモデリングしようとした結果という感じなので全く関係がないというわけではないし, まあ適当に眺めると type member やら path-dependent types を導入しようとした気持ちがわかってよいのではないか (何目線?)