Nix Expression Language で遅延リストを作ってみる

この記事は CAMPHOR- Advent Calendar 2018 15日目の記事です.14日目の記事は @Rtm6Lgoとある研究室の運営のエモいお話 でした.

Nix Expression Language を用いて遅延リストを作る.普段は「ジェネレータを作ったり、遅延評価してみる」だが,Nix Expression Language は基本的に純粋なので,mutable な state をもつイテレータや,それを生成するジェネレータという概念はなじまない.

続きを読む

Dhall v3.0.0 がリリースされた

Dhall v3.0.0 がリリースされた.メイジャーバージョンの更新ということで,いくつかの破壊的変更を含む.

続きを読む

Russell のパラドクスと λx.xx (または自己言及がもたらす豊かさと危うさについて)

お盆に数日の休みがあったので,Ludwig Wittgenstein の『論理哲学論考 (Tractatus Logico-Philosophicus)』を読み始めた.Wittgenstein の著作を読んでいると,彼が理論を継承し,また批判する対象となった Gottlob Frege や Bertrand Russell の思想にも同時に触れることになる.

『論考』の命題 3.3 以下に,Russell のパラドクスに対する解決策を提示し,Russell の主張を反駁する場面が見られるが,この記事ではむしろ,Russell 自身の回答である型理論 (theory of types) による解決策に目を向けたい.我々が普段プログラムを記述する際に触れる型の概念が如何にして生まれ,発展してきたのかを見ていくこととしよう.

続きを読む

Dhall で Kubernetes の YAML 管理をスマートにやっていく

こんにちは.Kubernetes 班の ryota-ka です。皆さん Kubernetes やっていますか?*1

Kubernetes をやっていこうとすると,大量の YAML を書くことになって大変である.大量の YAML を書くことは大変なので,大抵コピペする.コピペをするが,コピペは怖い.例えば,deployment を定義する YAML をコピペしたとして,万一 label を変更するのを忘れて,想定していない service からルーティングされたりすると悲惨である.そもそも(個人的な意見ではあるが) YAML の仕様自体があまりにも複雑かつ難解であり*2,ある種の仕様が余計なお世話だともしばしば感ぜられる*3

最近では kustomize が将来的に kubectl に統合される予定で開発が進められているが,この記事では異なる切り口として,Dhall lang を用いてプログラマティックに YAML ファイルを生成するという方法をご紹介したい.

*1:この冒頭挨拶は kubernetesに自分のコードがマージされるまでのフロー のオマージュです.

*2:一体どれだけの実装が YAML の仕様を満たしているというのか!

*3:"yes" を真だとみなしたりだとか.

続きを読む

@cycle/react を触ってみる

数日前,@staltz 氏から Cycle React のリリースがアナウンスされた.

@cycle/react を含む一連のライブラリ群は,React component を Cycle.js の中で用いることを可能にし,Cycle.js の component を React の中で用いることを可能にする.

続きを読む