女子高生になりたいスマートフォン用の表示で見る女子高生になりたいはるみちゃんのブログだよ。この広告は、90日以上更新していないブログに表示しています。ScalaのExercise6.11の問題をStateモナドを使用して解いてみます。問題設定スナックの自動販売機をモデリングする有限状態オートマトンを実装する。この自動販売機は2種類の入力を受け付ける。1つは硬貨の投入、もう1つはハンドルを回してスナックを取り出すこと。自動販売機の状態はロックされたか、ロック解除された状態かのどちらかになる。ロックが解除された状態でハンドルをまわすとスナックが出てくる。・ロックされた状態の自動販売機に硬貨を入れると、スナックが残っている場合ロックが解除される・ロックが解除された状態の自動販売機のハンドルをまわすと、スナックが出てきてロックがかかる・ロックされた状態でハンドルをまわしたり、ロックが解除された状態で硬貨を投入しても何も起こらない・スナックが売り切れたとき、自動販売機は入力をすべて無視する最終的には、入力のリストを渡し、自動販売機の最終的な状態をかえすsimulateMachine関数を実装する。//(Machine(true,0,3),(3,0))スナックが0のときと、ロックされた状態でハンドルをまわしたり、ロックが解除された状態で硬貨を投入したときのコードがinputCoinとturnHandleで冗長になってしまっている、愚直な実装です。コイン投入の時の挙動と、ハンドルをまわした時の挙動を独立して考える方が、はじめて実装する段階ではわかりやすいと思います。traverseでstateモナドを合成するとvalueが蓄積されてしまうので、うまくスタックを積み上げないような実装が出来ればよかったです。本家の解答はよりスマートなので、そちらも参照ください。(1)...Stateモナドについてざっくりと。»プロフィールid:sakata_harumiはるみちゃんのブログだよ。技術系の記事を書くよ。(6)作ったものとかボカロ曲をあててみたひきこもごも!QiitaClient茂こえたいぷスペーシー三宅電卓エロムビアンScamLoadingViewiOSAppIconMakeriTunesConnectScreenShotMakerはてなブログをはじめよう!sakata_harumiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。