Template Haskell でコード中に JSON を埋め込んだりコンパイル時にファイルから型安全に読み込んだりする

前回よりはもう少し実用的な例を.

Template Haskell を使って,Haskell のコード中に JSON をそのまま埋め込むことができるようにする.また,あらかじめ用意しておいた JSON ファイルをコンパイル時に読み込み,指定したデータ型の値にする.

ToC

  1. コード中に JSON を埋め込む
  2. コンパイル時に JSON をファイルから型安全に読み込む
続きを読む

Template Haskell でコンパイル時 FizzBuzz

数ヶ月前に Twitter で,コンパイル時に FizzBuzz を計算して,実行時には計算された文字列を出力をするだけ,というコンパイルFizzBuzz を何かの言語でやっているのを見かけた.元ネタは江添さんがC++で書いたものらしい.インスピレーションを受けて,Haskell で書いてはみたが,簡単すぎて全然おもしろくなくなってしまった.

続きを読む

Type-level TypeScript

この記事は CAMPHOR- Advent Calendar 2017 の21日目の記事です.

@ryota-ka です.普段は HERP という会社でリードエンジニアとして働いています.一昨日19日にサービスのティザーサイトを公開したばかりなので見てください.

herp.cloud

さて,12月といえば,万人受けしなさそうなネタでブログを書いては「はてブが付かねえ」と文句を言う季節ですが,今年もそういう方針で,TypeScript での型レベル計算について書きます.型レベルでの自然数などが定義できると,リストに型レベルで長さを付けることができて,空リストの先頭の要素を取ろうとしてランタイムで落ちる,という悲劇が生じる可能性をコンパイル時に排除できてとても嬉しいですね.

なお,使用している TypeScript のバージョンは,少し古くて 2.4.1 です.これは,手元でたまたま 2.6 系のプロジェクトと 2.4 系のプロジェクトがあったのですが,2.6 系だと型推論が停止せず (tsc が "Maximum call stack size exceeded" で死ぬ),悲しい気持ちになったからです.

以下いつも通り常体.

続きを読む

開発効率向上 tips vol.1 -ターミナル・シェル編-

最近弊社でも大学生のエンジニアインターンが増えてきて,彼らの成長のために,開発にあたっての知見を効率的に共有する手段を色々と模索している.こういった知見は再利用性も高く,社内に閉じている必要もまったくないので,こうしてブログに書き溜めていくことにしてみようかと思う.第一弾として,端末エミュレータ上でのオペレーションの効率化について記す.

続きを読む

エンジニアのためのTwitter クライアント、twterm v2 をリリースした

ターミナルエミュレータ上で動作する twterm の v2 をリリースした.

screencast

twterm.ryota-ka.me

これはなに

端末エミュレータ上で動作する Twitter クライアント.2015年1月ごろから細々と開発をしている.僕は普段 tmux でいくつも pane, window, session を作って作業をしているが,そのうちの一つで twterm を常に開いている.Text-based User Interface を採用していて,ターミナルから出ることなくインタラクティブTwitter を眺めたり,ポストしたりできて便利.

続きを読む