北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

Haskell入門のサンプルコードの最新LTS対応

拙著 Haskell入門 のサンプルコードは lts-8.24 にしか対応していなかったので、現時点の最新である lts-10.6 に対応させた。変更したのはすべてライブラリがアップデートされたのを追随したもの。 master ではなく lts-10 というブランチにしてあるので、注…

Re: 凸頂点の数 横へな2016.4.2 問題

凸頂点の数 。30分。 今回は共通化したいところをグッとこらえてコピペ。前回まで初めから抽象化にこだわって問題を解いていたが、具象例が集まってからのほうが良い抽象化ができることから、60分という時間を考えると抽象化はし過ぎないほうが良い選択だと…

Re: ぴったり含む長方形 横へな2016.3.5 問題

ぴったり含む長方形 。点1個から帰納的に最小の長方形を出そうと方針を誤り、敗北。 方針変換後は45分。これはさらに15分かけて足切りを入れたもの。そもそも点を累積して数えるようにすればもっと速い。 package Pire; use strict; use warnings; use Expor…

Re: まわせ! Bouwkamp!! 横へな2016.2.6 問題

まわせ! Bouwkamp!! に挑戦したが、惜敗。90分かかった。 正攻法で挑むと楽しい良問ではあったが、意外に手数が多い。 package Bouwkamp; use strict; use warnings; use Exporter qw(import); our @EXPORT_OK = qw(solve); sub decode_bouwkamp ($) { my @r…

Re: 不良セクタの隣〜 横へな 2014.3.7 問題

不良セクタの隣 の問題で肩慣らし。 以下はとりあえずテスト通しただけの状態そのままのコード。単体テスト含めてフルスクラッチからで45分くらい。場当たり的にモジュール化したので、無駄が多い。 初め「複数の」を見落としてて、最後に方針転換したけど、…

GHCi上でpiと打てば円周率が表示されるという話

裏書きに残りっぱなしになってたのを書いておく。GHCI上で pi と打つと、πの値が表示できる。 Prelude> pi 3.141592653589793 Pythonだとそうはいかない。 >>> pi Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'pi' is not def</module></stdin>…

自分の開発環境用Vagrantfileを作った

qiita.com ubuntuのインストール作業に勤しむ意味はないので、vagrantに任せることに。 ということでWindows上でvagrant使うことに決めたのだけど、Surface StudioとSurface Book 2の両方で環境構築するのはダルいので Vagrantfile 作って上げた。 github.co…

WindowsのreaderアプリがEdgeに惨殺される

Windowsのreaderアプリが2/15で使えなくなるとのこと 。騒いでいる人がほとんどいないけど、Surfaceをタブレットモードで使ったときの相性が非常に良かったので、どうしてそんなことをするのか全く理解ができない1。これでSurfaceを使う理由が1つなくなって…

Haskell入門の10章をDocker化する

Haskell入門 の10章は、 SQLite への依存があったりして Windows で試すのは若干面倒だったので、 Docker for Windows で試せるようにした。 https://github.com/hiratara/Haskell-Nyumon-Sample/compare/docker/chap10 docker/chap10 ブランチを持ってきて…

Surface Book 2 15” を買った

去年 と同様に、今年は Surface Book 2 15” を個人輸入した。 MS製品の個人輸入は3度目 1 で、毎年年末の散財の恒例行事となりつつある。 誤解のないように書いておくと、Surface Book 2は 国内でも販売している 。ただし、 15” はUSのみでの販売であるのと…

今日は「Club MySQL #2:(MySQLの)XProtocolはじめました、Haskellで」の日です

マニアックなイベント に来てますので、メモを残しています。 XProtocol始めました、Haskellで / Naoto Ogawaさん 意外とHaskellの人が多いかな、と haskellとMySQLで半分半分 XProtocol ProtocolBuffer Xはクロス (いろいろな言語から) CRUDスタイルAPIもあ…

Haskell入門という本を書きました

Haskell入門 という本を書きました。まだ店頭で買うことはできませんが、amazonでは予約を開始しています。また、電子版も早いうちに出ると聞いているので、そちらもあわせてお求め下さい。技術評論社さんのサイトではサンプルのpdfも読むことができます。 H…

今日は「builderscon tokyo 2017 一日目」の日です

慶応日吉キャンバスにおりますので、自分用のメモを残しておきます。 Opening / lestrrat さん 諸事情で英語(スライドは日本語)。 builderscon は YAPC::Asia の直系のカンファレンス いろんな技術の話を集めたものがbuilderscon 近年、様々な技術が互いに関…

今日は「builderscon tokyo 2017 前夜祭」の日です

おとなのビルコン へ来ていますので、自分用のメモを残しておきます。 めっちゃ混んでる。大規模カンファレンス感 「すげえ!」 「来てよかった!」

今日は「Haskell入門ハンズオン!」の日です

今日は「Haskell入門ハンズオン!」の日です https://shinjukuhs.connpass.com/event/58224/へメンター枠で来ていますので、自分用のメモを残しておく。 はじめに / 木下さん #Haskel 講師重城さん+メンター5人居ます haskellでわからないことはteratailで…

去年の9月にconduitの演算子が変わっていた

conduitといえば $$ や $= =$= のような演算子を使い分けなければいけなくて 面倒だなものだと思っていた のだが、去年の9月から .| だけを使えばいいように変わっていた。これは直感的で使いやすい。 module Main (main) where import Data.Char (ord, chr,…

自由モナドの定義であるところの Control.Monad.Free.Church.foldF

圏論勉強会の資料 によれば、 と自由な構成 について、 を与えると が得られるとある。 自由モナドの文脈でこれを考えると、関手 からモナド (の構造を忘れて関手と思ったもの)への自然変換を定義すれば、自由モナド からモナド への自然変換(正確にはモナド…

IOモナドで使うときだけログを吐く関数を定義する

純粋な関数として定義できるんだけど内部でやってることが複雑な場合、何が起きてるかわからないと心配だからとログを吐く機能をつけると、その時点でそいつは IO アクションになってしまう。ログを吐くという副作用を持つのだから IO になるのは当たり前で…

C言語の多次元配列の型はどう読むのか

C

int a[2][3] って、「整数2個の配列( int a[2] )を 3個の配列( [3] )にした、と読めるけどどうなのか1。 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf と比べて確認。 116ページのArray declaratorsの節によると、 T D[n] という形式のときは…

man introとcalコマンド

月末って何曜日だっけとかってときいつもgoogleカレンダー開いてたんだけど、これでいいじゃん。知らなかった・・・。 ubuntu:~$ cal May 2017 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 …

VMWareのインストール

最近ずっとVirtualBoxを使っていたのだけど、3Dアクセラレーションを有効にするとOpenGLがまともに動かなかったので、代わりとして久々にVMWareを入れてみた。 Ubuntu 17.04 を入れたんだけど、 Install VMWare tools が動かなかったので、 /media/ユーザ名/…

monadiusを動かす

12年前に書かれた http://www.geocities.jp/takascience/haskell/monadius_ja.html を手元で動かした。と言っても、ほぼ手を加えずにそのまま動いた。 $ diff -ur monadius.BK/ monadius diff -ur monadius.BK/src/Main.hs monadius/src/Main.hs --- monadiu…

shu-thing (シューティングもどき) を動かす

12年前にhaskellで書かれた shu-thing を手元で動かした。と言っても、ほとんど何もせずに動いてしまった。 @@ -10,6 +10,7 @@ import System.Process main = do + getArgsAndInitialize keystate <- newIORef [] cp <- newIORef (openingProc keystate) ini…

久々にoptparse-applicative使った

いつも optparse-applicative ってどう使うんだっけって悩むのだけど、 philoponさんのエントリ を見ながらやるとトップダウンにコードを書けてすごくよかった。

Mac Pro と BRAVIA の HDMI 接続

Mac Pro(ゴミ箱) と sony の BRAVIA を HDMI で繋いでいるのだけど、まったく安定しない。具体的に言うと、認識しないことがほとんど。BRAVIAとMac Proの電源をON OFFしつつHDMIケーブルをポートを変えつつ何度も何度も何度も何度も何度も何度も差し替えると…

Slackのstarとmute、joinの使い方

最近チャネルが増えてSlackを見るのが大変だったので改善した。社内で投稿したものだが、設定を変えてから快適になったので紹介する。 変更前のチャネルの管理方針 重要っぽいかそうでないかでなんとなく分けていた。大事っぽかったらstarで、大事じゃないけ…

VS 2017でrustを使う

Surface Studio に rust をインストールしようと思ったんだけど、 Microsoft Visual C++ Build Tools 2015 が要るらしい。せっかくなので Visual Studio 2017 使おうと思って探したんだけど、パッケージングの仕方が変わってるぽい。 まず、 このエントリ の…

Alternative preludes

Alternative preludes – Haskell – Aelve Guide Preludeの代替品の評価。どれも一長一短感ある。 自分のモチベーションはpartial functionよりも Text なんだけど、 Text にまとめたいと思いつつも、結局パッケージを使う以上は現状では String からは逃れら…

textlint の導入

textlintで日本語の自動校正サービスを作ってみた! | それいけ!フロントエンド 以前面倒だと思ってやってなかった textlint だけど、こちらのエントリの通りやったらさくっと動いた。 ざっくり手順。 npm の作法を知らないのが怖いところだけど、まあ、オ…

Server::Starter を利用できるサーバの実装

http://qiita.com/hiratara/items/2dacf8470c378b130d5c に書いたとおり。 下回りが苦手なので色々調べたのだけど、今回もGREEの https://github.com/gree/haskell-prefork なるリポジトリが役に立った。 fork するだけじゃんと思って中を読むと、環境変数仕…