ブックマーク / ryota-ka.hatenablog.com (2)

  • Vim script でジェネレータを作ったり、遅延評価してみる - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me この記事は CAMPHOR- Advent Calendar 2016 8日目の記事です. はじめに 日時間の2016年9月12日に,Vim 8.0 がリリースされた.Vim 7.4 のリリースからはおよそ3年振り,Vim 7.0 からは実におよそ10年振りのバージョンアップだそうだ.Vim 8.0 では様々な新機能が追加されたが,中でも Vim script にラムダ式が追加されたのには目を引くものがあった. ラムダ式の登場により,標準の map() 関数や filter() 関数の使い勝手が改善されたが,これらで遊んでいるうちに,似た操作をリストだけではなくイテレータに対して適用したいという欲求が自然と生まれてきた.しかしながら,Vim script にはリストはあれど,イテレータなどというものは存在するはずも

    Vim script でジェネレータを作ったり、遅延評価してみる - ryota-ka's blog
  • vty + StateT で画面のスクロールを実装する - ryota-ka's blog

    この記事は CAMPHOR- Advent Calendar 2015 4日目の記事です. こんにちは,@ryota-ka です.今年もアドベントカレンダーの記事がやって参りました. 今回の記事では,ncurses を使ってターミナル上でフルスクリーンアプリケーションを作成し,ユーザーのキー入力を受け取って画面のスクロール機能を実装します.スクロールのオフセットは State モナドで管理することにしましょう. TL; DR Haskell で ncurses を触る際には vty が便利 複数のモナドを同時に扱いたい時にはモナド変換子を使おう ソース GitHub に上がってます ncurses と vty について ターミナル上でフルスクリーンで動作するアプリケーションはよくあります.例を挙げると,tig, sl, twterm, chikubeam などなど.こういった挙動を実現する

    vty + StateT で画面のスクロールを実装する - ryota-ka's blog
  • 1