関数のメモ化

ブログに書いてみるとよく分からなくなってきました Haskell-jp で回答をもらいました。 @lotz84_ さんの記事や GHC のプロファイルに出てくる CAF がよく分かってなかったのをまとめる。 qiita.com fact のメモ化 lotz さんの記事の階乗 fact 関数を題材に…

技術書典 5 ふりかえり

え?6?いやいや 5 ですよ? techbookfest.org 池袋 慣れ親しんだ秋葉原の地を飛び出して池袋にやってきました。 めちゃくちゃ広くてびっくりです。秋葉原通運会館からアキバスクエアにやってきたときも思いましたが、同じ感想がもう一度。 ガラス張りじゃな…

Servant と Relational Record でウェブアプリケーション開発

Servant とは Servant は型レベルプログラミングによって、ウェブアプリとしてのインターフェースと実装との差異を防ぐことのできるウェブアプリフレームワークです。 haskell-servant.readthedocs.io 日本語記事としては lotz さんのこちらが分かりやすいの…

Haskell Windows Ctrl-C 動作確認

コード コードは前回記事と同じです(再掲)。 Git リポジトリーはこちら。 import Control.Concurrent import Control.Monad import System.Exit import System.IO import System.Win32.Console.CtrlHandler main :: IO () main = do tid <- myThreadId let…

Haskell で Ctrl-C を制御する(Windows)

Ctrl-C 等の割り込みの扱い方です。 tl;dr System.Win32.Console.CtrlHandler を使います。 Ctrl-C が押されたらクロージングの処理を伴って終了するプログラムを書いてみます。 import Control.Concurrent import Control.Monad import System.Exit import …

Windows で Haskell iconv をビルドする

GHC 8.0 以前についてはこちらを参考に。 teratail.com GHC 8.2 以降で stack を使う場合をここではとりあげる。 確信はないのだが、GHC 8.2 から GHC 自体が iconv に依存しなくなったのか、$(stack path --programs)\ghc-8.0.2\mingw\lib から libiconv.a …

Leica M3

Lomography Konstruktor F・Diana Mini から始まったフィルムカメラ熱ですが一瞬で行くところまで行ってしまった感じです。 Leica M3。 現在まで続く M 型 Leica の始祖を買ってしまいました。1962年製の56歳です。 (この写真を撮ったレンズも Asahi Super …

プラモデルカメラ Lomography Konstruktor F

本来はフジヤカメラに行くことが目的だった。 「カメラバカにつける薬 in デジカメ Watch」でも取り上げられてて、その前から気になってたのもあって中野に行った。 特に買うつもりもなかったので雰囲気だけ知れればいいやというようにそそくさと出たのだが…

『Yesod 入門』商業誌化

同人誌で発売していた『遠回りして学ぶ Yesod 入門』がこのたびインプレス R&D より『Haskell で作る Web アプリケーション 遠回りして学ぶ Yesod 入門』として商業誌化されることになりました。 www.impressrd.jp 同人誌版からの変更点は主に、 日本語が読…

初フィルム

厳密にいうと小学校の旅行などで「写ルンです」を使ったりしたことがあるので、初フィルムじゃないんだけど自分で装填するものとしては初ということで。 中野のコイデカメラで自分でプラモデルのように組み立てるカメラを見つけて「なんだこれは!?」と調べ…

Windows で haskell-ide-engine をビルドする

手順 1. ソースコード取得。 git clone git@github.com:haskell/haskell-ide-engine.git 2. Unicode を扱う ICU の古いバージョンが要るので取得。 自分の使うバージョンの text-icu の changelog を見て、必要な ICU のバージョンを探す。執筆時点では 53 …

入社

本日付けで IIJ に入社します。 職業 Haskeller になる……はず。

退職

2013年に新卒で入社した KLab を今日付けで退職しました。

技術書典 4 にサークル参加した

4月22日に開催された『技術書典 4』にサークル参加してきました。 techbookfest.org 技術書典は1と2に個人で参加して3は会社として参加して今回の4は会社と個人と2サークルにかかわっていました。 超技術書典を抜くと皆勤です。 個人サークル 既刊として『遠…

弊同人サークルのウェブサイトを作りました

がんばった。 doujin.kakkun61.com GitHub Pages だからと Jekyll にしたけど、生成したものを置けばいいんだから Hakyll でもよかったな。変えようかなというところ。 後はレスポンシブ対応したい。

なぜ Haskell が好きなのか

自分は Haskell が好きで休日は Haskell を書いています。そういうことを言うと関数型が好きなんですねと言われるのですが、Haskell のよさはそこじゃないと感じているので書き起こそうかと、筆を執りました。 というわけで、この記事は技術的文書というより…

C# でランク N 多相

C#

追記:これだと解決できていない。 C# に Sprache というパーサーコンビネーターがあるのだが、最近そいつを継続渡しスタイル(continuation passing style; CPS)にしてやろうと、Haskell のパーサーコンビネーター attoparsec を参考にいじっていた。 そこ…

“meaningless REX prefix used” “use of REX.w is meaningless”

コマンドプロンプトや PowerShell でプログラムを実行したときに次のようなエラーが出て困っていた。 [0x7FFE822C2B00] ANOMALY : meaningless REX prefix used [0x7FFE85B3DDA0] ANOMALY : use of REX.w is meaningless (default operand size is 64) REX …

関係と代数的データ型との相互変換についての妄想 その3

思い付き その2 class QueryUser ? where queryUser :: (?) => Key -> MonadDB User instance QueryUser ? where -- queryUser :: (HasFriends ?) => Key -> MonadDB User query = … instance QueryUser ? where -- queryUser :: (HasName ?) => Key -> Mona…

関係と代数的データ型との相互変換についての妄想 その2

思い付き その1 型レベルのリストをクエリー函数に与えてやる。(DataKinds が有効) data Attr = Id | Name | Friends data User = User { id :: Int, name :: String, friends :: [User] } query :: Proxy '[??] -> Key -> MonadDB User userFriends :: Pr…

関係と代数的データ型との相互変換についての妄想 その1

OR マッパーみたいな、関係*1とデータ型との相互変換が機械的にできたら嬉しいなという話。 シンプルなのは簡単だしすでにできる。例えば次のような関係がある場合*2、 var user base relation { id integer, name string, } key { id }; var friends base r…

技術書典2にサークル参加します 「Haskell Yesod 本」

4月9日日曜日にアキバ・スクエアにて開催される技術書オンリー同人誌即売会「技術書典2」にサークル「趣味はデバッグ……」として参加します。 冬コミで頒布した『遠回りして学ぶ Yesod 入門』の誤字脱字等を修正して組版を改善したものを持っていきます。 新…

Yesod で1ページに複数個フォームがある場合は identifyForm を使う

resolver lts-5.4 で確認。 問題 1ページに複数個フォームがある場合、runFormPost はそれぞれのフォームの区別をしてくれません。どういうことかというと、例えば下記のような2つのフォームを利用するとします。 data AFormData = AFormData Text aForm :: …

Yesod と HDBC-mysql と haskell-relational-record で “Commands out of sync”

Yesod と HDBC-mysql と haskell-relational-record を一緒に使っているのだが、MySQL サーバーに「Commands out of sync; you can’t run this command now」って言われてぐぬぬってなって、最近デバッグをがんばっている。とりあえず途中経過をメモしておく…

『遠回りして学ぶ Yesod 入門』誤字脱字等を修正した電子版を公開しました

先日の投稿で公開した正誤表の内容を反映した電子版を公開しました。 kakkun61.hatenablog.com コミックマーケット 91 で購入した方は対面電書で、オンラインで購入した方は BOOTH で更新後のファイルを入手することができます。

『遠回りして学ぶ Yesod 入門』正誤表

kakkun61.booth.pm C91 版 電子版では修正済みです。 ページ 章節 誤 正 補足 3 はじめに Yesod の初歩的な解説が書かれた本の上巻です。 Yesod の初歩的な解説が書かれた本の上巻です。 7 1 リンク切れの検出や リンク切れの検出や 17 3.2 これは quasi quo…

Adobe Typekit のフォントファイルの場所(Windows)

アプリがフォントをうまく認識しない場合にフォントファイルを直接インストールして対処したりできる。同一マシンならライセンス的にも大丈夫なはず。保証はしません。 環境 Adobe Photoshop CC 2017 Windows 10 場所 %appdata%\Adobe\Adobe Photoshop CC 20…

コミックマーケット 91 ふりかえり

コミックマーケットお疲れさまでしたー。 Yesod 本 紙面版 完売!後は電子版のみ。電子版はいっぱいあります! #C91 #Haskell #Yesod— kakkun61@技術書典2 う-04 (@kakkun61) 2016年12月29日 印刷分完売しました。ありがとうございますー。技術書典のときよ…

コミックマーケット91 『遠回りして学ぶ Yesod 入門』

サークル「趣味はデバッグ……」の2冊目の頒布をコミックマーケット91にて行います! 『遠回りして学ぶ Yesod 入門』 前回、技術書典で頒布した『遠回りして学ぶ Yesod 入門(上)』の増補改訂版という形になります。 対象読者 対象読者は前回通り、下記ような…

少女セクト

この記事は Krile Advent Calendar 11日目の記事です。 Krile いいですね。Wassr 民だったので Krile 2 のころから使ってました。 さて本題。 少女セクト 少女セクト (メガストアコミックス)作者: 玄鉄絢出版社/メーカー: コアマガジン発売日: 2005/08/19メ…