2018-06-01から1ヶ月間の記事一覧
ネストしたモナドの取り扱い モナドがネストして帰ってくることがあります。 例えば、DBに接続してユーザレコードを取り出す時、DBに接続できたかどうかを表すEither、該当のユーザがいたかどうかを表すOptionのモナドがネストして帰ってくるケースを考えて…
昨日から色々あってGo langで開発をはじめました。 超にわかですが、気づいたことやハマったことなどあれば備忘録を残しておこうと思います。 今回は、gormを使ってBelongToの関係にあるFishモデルとWaterAreeモデルのリレーションを組んでみます。 github.c…
Functional Programming in ScalaのExercise6.11の問題をStateモナドを使用して解いてみます。 問題設定 スナックの自動販売機をモデリングする有限状態オートマトンを実装する。 この自動販売機は2種類の入力を受け付ける。 1つは硬貨の投入、もう1つはハン…
Stateモナドについてざっくりと。 状態の変化を伴うミュータブルな計算をFunctional Programmingのコンテキストで表現可能にしたもの。 catsにおけるStateモナドのapplyメソッドのシグネチャは以下のようになっています def apply[S, A](f: S => (S, A)): St…
Nanodegreeとは MOOCプラットフォームであるUdacityの提供する有料コースです。 基本的には無料の講座と同様、動画を見て学ぶ形になります。 無料コースと比較して以下のような特徴があります。 修了には指定された幾つかのプロジェクトを期限以内に提出しな…
OpenAI Gym gym.openai.com 強化学習アルゴリズムを開発して比較するためのツールキット。 シンプルなものからAtariのゲームのような複雑なものまで、様々なシチュエーションが用意されています。 今回は、そこから「Taxi-v2」環境を使って、強化学習によるA…
SwiftのOptionalをResultにするExtension書いたのでメモ。 Resultはこのライブラリを入れてます github.com 実装 import Result extension Optional { func toResult<E: Error>(error: E) -> Result<Wrapped, E> { guard let value = self else { return .failure(error) } return </wrapped,></e:>…