エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

Elixir

Duck Typing 〜 Elixirの多態

# 鶩 defmodule Duck do defstruct name: nil end # 犬 defmodule Dog do defstruct name: nil end # 猫 defmodule Cat do defstruct name: nil end # 鳴くプロトタイプ defprotocol Sound do def sound(_) end # 鶩が鳴く実装 defimpl Sound, for: Duck do …

Elixir の OptionParser.parse はハイフンをアンダスコアに置き換える

OptionParser.parse(["--show-all"], [switches: [show_all: :boolean]]) # => {[show_all: true], [], []} OptionParser.parse(["--show_all"], [switches: [show_all: :boolean]]) # => {[], [], [{"--show_all", nil}]} Elixir converts switches to unde…

「どう書く」をElixirで書いたときのテストを簡単にする

Elixir でコールバックってどうやって実装しているのだろうと調べてみたら、マクロで実現されていました。なるほど。 その昔 C 言語でマクロを使ってコードを生成していたのを思い出した。 そんなわけで。マクロを使って「どう書く」のテストを実行するモジ…

第3回ESMどう書くを開催しました

前回開催からおよそ1年半。第3回社内向けどう書くを開催しました。 プログラミングElixir 現在、社内で「プログラミングElixir」の読書会を開催しています。プログラミングElixir作者: Dave Thomas,笹田耕一,鳥井雪出版社/メーカー: オーム社発売日: 2016/08…

ビットをもっと自由自在に扱える言語

Elixir を学んでいます。 ビットをもっと自由自在に扱えるようにしてみた 7 年ほど前にビット操作を支援するコードを C++ で書いたことがあります。 ビットをもっと自由自在に扱えるようにしてみた。 - エンジニアのソフトウェア的愛情 ビットをもっと自由自…

Redis Pub/Sub in Elixir 覚書

Exredis を使っています。 GitHub - artemeff/exredis: Redis client for Elixir defmodule Subscribe do def sub(channel) do {:ok ,client_sub} = Exredis.Sub.start_link pid = Kernel.self Exredis.Sub.subscribe(client_sub, channel, fn msg -> send(p…

RPN in Elixir

# Rpn.eval "3 1 - 2.1 +" # => 4.1 defmodule Rpn do def eval(expression) do eval(tokenize(expression), []) end defp eval([], [result]), do: result defp eval(["+"|tokens], [rhs, lhs|stack]), do: eval(tokens, [lhs + rhs | stack]) defp eval(["…

FizzBuzzを宣言的に書く、宣言できない場合は宣言っぽく書く

プログラミング Elixir を読んでいます。プログラミングElixir作者: Dave Thomas,笹田耕一,鳥井雪出版社/メーカー: オーム社発売日: 2016/08/19メディア: 単行本(ソフトカバー)この商品を含むブログ (3件) を見る Elixir プログラミング Elixir の第5章で …