blog.ryota-ka.me

Cycle.jsをJSXで書く

Keywords:

Cycle.jsとDOM DriverでWebアプリケーションを書く際に,sinkに流す仮想DOMをJSXで記述したい.公式を読むと普通にやり方が書いてあったが,ググって解決しようとしていると,古い手順に当たってしまい,少し引っかかってしまった.加えて,「最近のフロントエンドのエコシステムはこういう感じなのか」と思うところもあったので,同じような立場の人のために記録を残しておくことにする.なお,同じ轍を踏まぬよう,読者諸賢におかれましては,あくまで2017年1月30日現在の情報であることにご注意願いたい.

以下では,Cycle.js (w/ xstream)でウェブアプリケーションを構築する.また,アセットのバンドルにはWebpackを用い,babel-loaderを通じてES2015+およびJSXのトランスパイルを行うこととする.

なお,今回のプロジェクトはGitHub上で公開しているので参考にされたい.

続きを読む

Vim scriptでジェネレータを作ったり、遅延評価してみる

この記事はCAMPHOR- Advent Calendar 2016 8日目の記事です.

はじめに#

日本時間の2016年9月12日に,Vim 8.0がリリースされた.Vim 7.4のリリースからはおよそ3年振り,Vim 7.0からは実におよそ10年振りのヴァージョンアップだそうだ.Vim 8.0では様々な新機能が追加されたが,中でもVim scriptにラムダ式*1が追加されたのには目を引くものがあった.

ラムダ式の登場により,標準のmap()関数やfilter()関数の使い勝手が大幅に改善されたが,これらで遊んでいるうちに,似た操作をリストだけではなくイテレータに対して適用したいという欲求が自然と生じてきた.しかしながら,Vim scriptにはリストはあれど,イテレータなどというものは存在するはずもないので,今回自前で実装する運びとなった.

本稿では,まず初めに,ECMAScript 2015のインタフェースに似た*2,すなわち,nextを呼ぶと{ value: 42, done: false }という形式に近い値が返ってくるイテレータをVim scriptで実装する.次に,このイテレータを返す関数,すなわちジェネレータを定義する.その後,イテレータを拡張し,mapfilterなどのよく知られたメソッドを定義することで,種々の操作を簡便に行えるようにする.

これまでの流れ#

続きを読む

Perl 6でジェネレータを作ったり、遅延評価してみる

この記事はCAMPHOR- Advent Calendar 2015 30日目の記事です.

はじめに#

今月2015年12月は,12月3日のPHP 7のリリースに始まり,クリスマスにはRuby 2.3並びにPerl 6のリリースが相次いだため,往年のスクリプト言語たちにとっては華々しいひと月となった.調べてみたところ,PHP 5.0.0のリリースは2004年1月,Perl 5.000のリリースは1994年10月だったそうなので,やはり大型のリリースが相次いだのだなという気分になる.

というわけでこの際なので,最近ではもはやCAMPHOR-の伝統芸能となりつつある,「ジェネレーターを作ったり、遅延評価してみる」シリーズをPerl 6で書いてみることにした.ちなみに筆者のPerl歴は1日である.

続きを読む

Rustでジェネレータを作ったり,遅延評価してみる

続きを読む
次のページ