遊ぶ金ほしさに……

遊ぶ金ほしさに、先月から HERP の業務委託を受け働きはじめました。 19ヶ月ぶりの労働は体にしみます。 まずは週3日の労働から。

多相からプログラミング言語を見る

こんにちは。ホビー型システミストの岡本です。 最近 C++ の習得をしていて、なんとなく多相(polymorphism)の視点からいくつかのプログラミング言語をまとめてみようという気になったので書いてみます。 部分型多相(subtype polymorphism) クラスベース…

GHC 演算子優先順位トリビア

GHC の演算子の優先順位には -1 がある(たぶん組込でしか使えない #Haskell pic.twitter.com/Xa0OIjvw5i— o̞͑kä̝mo̞͑to̞͑ kä̝zʊ̠kɪ̟ (@kakkun61) January 3, 2021

Case Analysis 関数

今回は case analysis と呼ばれる関数の話です1。 data D a b c = C0 a b | C1 c 例えば上記のようなデータ型があった場合 case analysis 関数は次のようになります。 d :: (a -> b -> d) -> (c -> d) -> D a b c -> d d f _ (C0 a b) = f a b d _ f (C1 c) …

続・刹那的純粋関数的データ構造と線形型

The English version is at Dev. 前回の記事の追加情報です。 kakkun61.hatenablog.com pure 抜け道はなかった まあ、こういうインターフェースでありがちな pure で外に出す抜け道が存在するのですが。 最後にこういうことを無思慮に書いたわけですが、Dev …

刹那的純粋関数的データ構造と線形型

The English version is at Dev. 『純粋関数型データ構造』(以降 PFDS)の5.2章に刹那的純粋関数的キューというものが出てきます。 https://asciidwango.jp/post/160831986220/%E7%B4%94%E7%B2%8B%E9%96%A2%E6%95%B0%E5%9E%8B%E3%83%87%E3%83%BC%E3%82%BF%E…

とりとめのない GHC 線形型メモ

GHC 9.0.1 alpha 1 がリリースされたときに線形型をいじってみていたことをメモしていなかったので思い出しながらメモしていく。 mail.haskell.org 使用バージョン GHC 9.0.0.20200925 上記リンクのもの ghcup ならそれ経由でインストールできる。 ghcups の…

Windows から Windows コンテナーと Linux コンテナーの両方の Docker を使う

Docker Desktop for Windows は Windows コンテナーと Linux コンテナーが使えるのだけど排他的になっている。 そう思ってスクショを取るために切り替えボタンを押してみたら今はそうじゃない?Windows/Linux コンテナーの切り替え、前は完全に排他的だった…

無職になりました

無職になりました。 とりあえず異世界行ったら本気出しますかね。 経緯 経緯としては鬱になって休職をしていたのですが、休職できる期間が9ヶ月だったので満了しました(在職期間によって休職可能期間が変わるようです)。 kakkun61.hatenablog.com これから…

Data.Monoid.First と Data.Semigroup.First あるいは Last

Data.Monoid.First のドキュメントを見ていたら次の記述を見つけたことから始まる記事です。 This type will be marked deprecated in GHC 8.8, and removed in GHC 8.10. Users are advised to use the variant from Data.Semigroup and wrap it in Maybe. …

動的型付けインタープリター言語 Haskell

コンパイルを待つなんて生産性が低い! 通らないコード片のエラーなんか知らない! えっ?!まだ静的型検査してコンパイルしてるの? デキるプログラマーは動的型検査!インタープリット! main = do input <- readLn if input < 10 then putStrLn "Hi" else…

GitHub Actions のアクションとして同一リポジトリーで定義した Docker イメージを使う

この記事では GitHub Actions のアクションとして同一リポジトリーで定義した Docker イメージを使う方法を説明します。 GitHub Actions のワークフローで Docker イメージをビルドする方法などは扱いません。 ここでアクションとワークフローの単語を次のよ…

shake + lucid + hint で静的ウェブサイト生成

The English version is at Dev. 同人活動用のウェブサイトがあって今までは Jekyll で生成していました。これを Shake + Lucid + Hint で作成した生成器に置き換えました。 doujin.kakkun61.com shakebuild.com hackage.haskell.org hackage.haskell.org ソ…

「共有した URL を別のアプリで開く」2.0 をリリースしました

play.google.com どういうアプリかというと EXTRA_TEXT に URI に入ったインテントが ACTION_SEND でやってくると ACTION_VIEW でインテントを投げ直すアプリです。 地味に50万超インストールされて、なぜかブラジルでよく使われているようです。 バージョン…

鬱になりました

鬱になりました。 Twitter や Facebook にはちらっと書いたのですが、鬱で1月終わりから休職しています。ここらで一度ふりかえってみようかと思ったので書いてみます。 kokoro.mhlw.go.jp 何かおかしい 何かおかしいなと思ったのは正月の帰省から戻ってきた…

一番簡単な MonadFail インスタンス

The English version is at Dev. 導入 fail が Monad から剥がされて早や幾年、私は失敗する可能性のある計算は MonadFail を使って型を付けるのが好きです。 foo :: MonadFail m => m a こうすると IO の文脈であればその中で、純粋な文脈であれば Maybe な…

フィルムの在庫を数えた

後で数えてブログにしよう 期限も調べないと pic.twitter.com/YHJYCPKTN8— o̞͑kä̝mo̞͑to̞͑ kä̝zʊ̠kɪ̟ (@kakkun61) 2020年7月26日 SARS-CoV-2 の影響やらで最近フィルムの消費が少ないので期限切れフィルムを洗い出すことと冷蔵庫の中の整理のためにフィルム…

Twitter ツイートにウェブアプリを埋め込む

Twitter Card の Player だと iframe を使って埋め込めることを知ったので埋め込んでみた。(ツイートの埋め込みの中で埋め込んだものを再生できないので一旦ツイートを開く必要がある。) https://t.co/RaPaDlGXw6— o̞͑kä̝mo̞͑to̞͑ kä̝zʊ̠kɪ̟ (@kakkun61) 2…

Elm でマテリアルデザインなウェブアプリを作った

アプリ概要 アプリとしてはニッチな用途で、写真用のモノクロネガフィルムを自家現像するときに便利なタイマーアプリです。下記は埋め込まれた実際に動くアプリです。 Photo Film Dev で公開しています。 時間配分をレシピと呼んでいますが、レシピはサーバ…

Windows Terminal に MSYS2/MinGW64 を追加する

Windows 10 2004 にしたので Windows Terminal をさわってみた。自分の用途だと Cmder はもう使わなくていいなと思う。 さて、Windows Terminal に MSYS2/MinGW64 を追加したのでその設定を示す。 { …, "profiles": { …, "list": [ …, { "guid": "{43257a9a-…

Windows のホームフォルダーにドットファイルを作らないでほしい

郷に従ってほしい pic.twitter.com/NzIep3qJcK— 岡本和樹 (@kakkun61) 2020年6月26日 Windows ではファイル名の先頭にドットを付けるだけでは隠しファイルにならないのでユーザーのホームフォルダーを汚染することになる。 だいたいの場合では LOCALAPPDATA …

Haskell 環境構築ツールフローチャートを作りました

前に環境構築についての記事を書いたのですが、初学者向けにパッと見て分かるようにフローチャートにしました。kakkun61.hatenablog.comGoogle ドライブ 図形描画のファイルはこちらです。コメントを付けることができます。docs.google.com

新しいディスプレー

会社が 4K ディスプレーなのもあって、家でプログラミングしてたら画面が窮屈に感じてきてうちも 4K ディスプレーを導入しました。 特に Elm の標準のフォーマットが密度低いのでフル HD だと不便だったのが最後の引き金でした。 4K かつ HDR にしました。 K…

postgresql-pure を開発しました

この記事は Haskell Advent Calendar 2019 の6日目の記事です。 hackage.haskell.org postgresql-pure は Haskell の PostgreSQL ドライバー(クライアントライブラリー)で次のような目標で開発しました。 マルチコア環境でのパフォーマンス向上 暗黙のロッ…

FFI で Haskell から Rust を利用する

Rust で作ったライブラリーを静的リンクして Haskell(GHC)から使う例と説明を書いた。 github.com

GHC 環境構築 概観 と PowerShell

Haskell の開発環境を構築する方法は何通りかあり、新しいツールが出ると「今はこれだ」とほめるブログも公開されますがそれが初学者を混乱させることがよくあります。 本記事ではビルドツールのインストールにしぼり、開発支援、例えば ghc-mod・haskell-id…

C ドライブ依存を減らす

いろいろなソフトウェアがデフォルトで何でも C ドライブを使う。 C ドライブが手狭になってきたのでいくらかのデータを別ドライブに移行する方法をメモしておく。 Stack Stack(Haskell)のリソースはユーザー環境変数 STACK_ROOT の指すディレクトリーに保…

Zenza Bronica S 系用接写リング

Zenza Bronica S 系用接写リングの説明書(をスキャンしたものをプリントしたもの)を入手したので文字データに起こした。 docs.google.com この接写リングは4個(C-A C-B C-C C-D)で1組になっています 使用できるレンズも 40 mm~200 mm までと巾広く 標準…

最近の自分の Haskell 開発環境(Windows)

id:syocy のブログを見たので Windows で自分がどうしているかをメモしておく。 syocy.hatenablog.com Stack 最近は ghcup があるがシェルスクリプト製で自分は PowerShell ユーザーなので stack を使っている。(ghcup はなんで Haskell 製じゃないんだ1?…

関数のメモ化

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