Ruby のような実行時に何でもできる言語だと、ユーザが書いた Ruby のコードを実行したり、プラグインの gem をインストールするだけで使えるようになったりする仕組みを提供できる。 例えば spring は ~/.spring.rb や config/spring.rb を自動的に読み込み、また spring-commands- で始まる gem を自動的に require し、プラグイン側は Spring.register_command で独自のコマンドを定義できるようになっている。 https://github.com/rails/spring/blob/v1.1.2/lib/spring/commands.rb https://github.com/jonleighton/spring-commands-rspec/blob/v1.0.1/lib/spring/command
例えばテキストを埋め込むだけなら、 main = putStrLn $(LitE . StringL <$> runIO (readFile "hoge.txt")) -- hoge.txt の中身は hogefuga と書かれているとする。 とするだけで、 main = putStrLn "hogefuga" と同じ意味になってくれます。 ファイルが無かったり何らかのエラーが発生したらコンパイルエラーになるだけなので安心です。 型を分解していくとこんな感じ。 readFile "hoge.txt" :: IO String runIO :: IO a -> Q a StringL :: String -> Lit LitE :: Lit -> Exp runIO で IO モナドから Q モナドに変換してくれるので、あとは Q String から文字列リテラルの Q Exp に変換してる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く