お布団宇宙ねこ

にゃーん

Haskell

optparse-applicativeを使ってCUIツールを作る

Haskellで簡単でもいいから何かツール作りたいなあと思ってシュッと作れそうなCUIツールを作ったので、作るにあたって利用したライブラリoptparse-applicativeの紹介をします。 はじめに 今回CUIツールを作る上で基本となるオプションパーサの部分にライブラ…

Applicativeを理解する

前回の記事ではFunctorについて紹介しました。今回はFunctorをさらに強力にしたApplicativeという型クラスについて解説します。 適用する関数も箱に入れる Functorでは、ある状態という箱に入った値を関数に適用するための振る舞いを定義しているのでした。 …

Functorを理解する

この記事ではFunctorというHaskellには欠かせない型クラスについて、概念や捉え方、どういった型がFunctorという振る舞いをできるのかを解説します。 型クラスとは 型クラスとは、値の等値性を判定したり、ある値を文字列として表現したりと特定の振る舞いを…

Stateモナドを理解する

Stateモナド、定期的にわかった→わからんを繰り返してる— わさびのり太郎 (@ku00_) 2017年5月29日 ということがあったので主に備忘録としてまとめました。 この記事では 『すごいHaskellたのしく学ぼう!』 (通称「すごいH本」)からコイントスをシミュレーシ…

HaskellでMNISTを使えるようにする

Qiita に 雑な記事 を書いただけになっていたのでちょっとした解説記事を書きました。 今回やったこと 『ゼロから作るDeep Learning – Pythonで学ぶディープラーニングの理論と実装』 のMNISTを扱うための下記サンプルコードを、PythonからHaskellに実装し直…

Haskell で『ゼロから作るDeep Learning』(3)

『ゼロから作るDeep Learning – Pythonで学ぶディープラーニングの理論と実装』 の読書メモです。 今回は 「4.5.1 2層ニューラルネットワークのクラス」の手前まで。 前回 次回 4章 ニューラルネットワークの学習 学習 この章でいう学習とは、訓練データから…

Haskell で『ゼロから作るDeep Learning』(2)

『ゼロから作るDeep Learning – Pythonで学ぶディープラーニングの理論と実装』 の読書メモです。 今回は 「3.6 手書き数字認識」の手前まで。 前回 次回 3章 ニューラルネットワーク ニューラルネットワークとは パーセプトロンでは人力で重みを決めていく…

Haskell で『ゼロから作るDeep Learning』(1)

『ゼロから作るDeep Learning – Pythonで学ぶディープラーニングの理論と実装』の読書メモです。 www.oreilly.co.jp この書籍のサンプルプログラムは Python で書かれていますが、表題の通り自分は Haskell で書いていきます。 今回は、2章全部です。 2章 パ…

Stack を使って Scotty 入門してみた

Haskell の Web フレームワークである Scotty を触ってみました。 Yesod で使えるなら Scotty でも同じようにできるだろうと思って今回も Stack を使ってみました。 Hello World 的なものを表示するまで プロジェクトを新規作成してから setup までやってお…

HaskellでAOJの問題を解いた(ITP1_8)

AOJ の Introduction to Programming を解いたときのメモです。 前回: HaskellでAOJの問題を解いた(ITP1_7) 今回解いた問題 ITP1_8 8_A: Toggling Cases 8_B: Sum of Numbers 8_C: Counting Characters 8_D: Ring 8_A Toggling Cases http://judge.u-aizu.ac…

HaskellでAOJの問題を解いた(ITP1_7)

AOJ の Introduction to Programming を解いたときのメモです。 前回: HaskellでAOJの問題を解いた(ITP1_6) 今回解いた問題 ITP1_7 7_A: Grading 7_B: How many ways? 7_C: Spreadsheet 7_D: Matrix Multiplication 7_A Grading http://judge.u-aizu.ac.jp/o…

HaskellでAOJの問題を解いた(ITP1_6)

AOJ の Introduction to Programming を解いたときのメモです。 前回: HaskellでAOJの問題を解いた(ITP1_5) 今回解いた問題 ITP1_6 6_A: Reversing Numbers 6_B: Finding Missing Cards 6_C: Official House 6_D: Matrix Vector Multiplication 6_A Reversin…

HaskellでAOJの問題を解いた(ITP1_5)

AOJ の Introduction to Programming を解いたときのメモです。 前回: HaskellでAOJの問題を解いた(ITP1_3~4) - お布団宇宙ねこ 今回解いた問題 ITP1_5 5_A: Print a Rectangle 5_B: Print a Frame 5_C: Print a Chessboard 5_D: Structured Programming 5_A…

HaskellでAOJの問題を解いた(ITP1_3~4)

AOJ の Introduction to Programming を解いたときのメモです。 github.com 今回解いた問題 ITP1_3 3_A: Print Many Hello World 3_B: Print Test Cases 3_C: Swapping Two Numbers 3_D: How Many Divisors? ITP1_4 4_A: A / B Problem 4_B: Circle 4_C: Sim…

Haskellで空白区切りの入力を受け取る

ku00.hatenablog.com 前回、AOJ の問題をいくつか解いたときに空白区切りの入力の扱いに悩んでいましたが、前回より良い方法が見つかったのでメモしておきます。 <$> を使おう 入力として2つの整数が空白区切りで渡されるとき、それぞれの整数を a, b という…

Haskellに慣れるためにAOJの問題を解いてみた

すごいHaskellたのしく学ぼう! や 関数プログラミング実践入門 を読んだだけでは経験値が全く足りないので、AOJ (Aizu Online Judge) を使って Haskell を書く練習をすることにしました。 問題セットは色々ありますが、とりあえず Introduction to Programm…

Yesodに入門しようとして一番始めにyesod-binを入れて失敗した話

Yesod に入門をしようとして 公式サイト の手順を無視したら失敗した話です。 何をしたのか Yesod を使うために必要なパッケージをインストールするところから始めました。 $ stack install yesod-bin cabal-install --install-ghc ... Copied executables t…

Stack を使って Haskell の Hello World をやってみる

以前 Stack を使って すごいH本 を学習したのですが、それっきり全く Haskell に触れていなかったのでリハビリがてら、 Stack を導入して Hello World を出力するまでの方法について書いておきます。 Stack のインストール Mac の場合は Homebrew を使ってイ…