Haskell
Applicativeスタイルで.*?で任意項目、.!=でデフォルト値を設定します。` parseJSON (Object m) = AppConfig <$> m .:? "port" .!= 8081 -- default a sample of reading a yaml file by Haskell
package servant-multipart: multipart/form-data (e.g file upload) support for servant $ cabal install servant-multipart Resolving dependencies... Notice: installing into a sandbox located at foo/.cabal-sandbox Downloading http-client-0.5.6.…
いつも忘れるので備忘 coderwall.com >:set prompt "\ESC[34mλ> \ESC[m" λ> aa <interactive>:28:1: error: Variable not in scope: aa λ> :set prompt "\ESC[1;34m%s\n\ESC[0;34mλ> \ESC[m" *Main Control.Monad.Morph Control.Monad.Trans Control.Monad.Trans.Maybe Co</interactive>…
1: SuperColliderを起動する。 2: SuperDirtを起動する。 SuperDirt.start; 3: ghciを起動、ライブラリの取り込み $ cabal repl GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help Prelude> import Sound.Tidal.Context -- インポート 4: repl…
pkg-confgとして認識されているか確認する。 $ pkg-config --libs libpcre Package libpcre was not found in the pkg-config search path. Perhaps you should add the directory containing `libpcre.pc' to the PKG_CONFIG_PATH environment variable No …
A simple servant sample of error
A simple servant sample of Capture
simple servant sample $ curl http://127.0.0.1:8081/myapi [{"name":"abc","id":1}]
サンドボックスの作成 (root)foo:mysqlsample foo$ cabal sandbox init Writing a default package environment file to /Users/foo/work03/haskelldatabase/mysqlsample/cabal.sandbox.config Creating a new sandbox at /Users/foo/work03/haskelldatabase…
github.com このサンプルを動かそうとしたのですが、かなりハマったので、忘れないうちにメモを取ります。サンプルそのものの問題ではないです。 基本的な考え方 利用環境のOpenGLのバージョンを確認する。 support.apple.com GLSLのバージョンを確認する。 …
GLFWでwindowを表示するのサンプル(意外にも、単純なサンプルが検索しても見つけられなかった) the smallest GLFW sample
どうもGLUTは描画がメインで、GUIの操作はうまくできないらしく、GUI操作までやりたい場合はGLFWを使うようです(この点は理解があやふや)。ともかく動いたのでメモ。 サンプル ライブラリ OpenGLのライブラリ(Macではデフォルトで入っている??) GLFW - A…
GHC 8.0からVisible Type Applicationが導入されました。 TypeApplication – GHC 今までは::で型を明示的に指定していました。 Prelude> Prelude> let x = return 1 Prelude> :t x x :: (Num a, Monad m) => m a Prelude> let x = return 1 :: Maybe Int Pre…
IntとIntegerとの違い インスタンスの確認 Prelude > :i Int data Int = GHC.Types.I# GHC.Prim.Int# -- Defined in ‘GHC.Types’ instance Bounded Int -- Defined in ‘GHC.Enum’ instance Enum Int -- Defined in ‘GHC.Enum’ instance Eq Int -- Defined in…
下記にあるexampleのgreet.hs用のcabalファイルを作ります。 github.com cabal initにて対話形式で必要な項目を入力していきます。 foo$ cabal init Package name? [default: servant02] greet Package version? [default: 0.1.0.0] Please choose a license…
@lotz さんの下記の記事があります。手元で動かそうとしたところ(2017/01/15時点)、記事が書かれた頃とライブラリのバージョンが変わっているため、そのままでは動作しませんでした。そこで、修正部分をメモしました。 qiita.com 修正のポイントは以下の2点…
Log出力したいだけなのにさっぱりわからず。下記は動作するけどコーディングの考え方が間違っているはず。LoggingTはMonadXXXXのインスタンスになっているのに、なんでliftが必要なのかも謎。Haskellの独学は厳しい。。。。 Control.Monad.Logger Monad Logg…
stackoverflow.com Deducing code from types: filterMbyorgey.wordpress.com Powerset by filterM
Monadic parsing in Haskell Monadic parsing_in_Haskell
all sorts of permutations (insertion sort)
Monoid全般 Monoid応用 FizzBuzz itchyny.hatenablog.com Diagrams Diagrams - Diagrams Quick Start Tutorial Finger tree
> :t map map :: (a -> b) -> [a] -> [b] > :t fmap fmap :: Functor f => (a -> b) -> f a -> f b > :t liftM liftM :: Monad m => (a1 -> r) -> m a1 -> m r > :t (<*>) . pure (<*>) . pure :: Applicative f => (a -> b) -> f a -> f b > map (+1) [1,2,…
waiでrequestの基本的な使い方を確認するサンプル。 wai_hello.hs wai_index.html *Main> main start app function ==================================== requestMethod : GET secure : False rawPathInfo : /cgi.php rawQueryString : ?foo=1111 requestHe…
monadのfail関数の型は、fail :: Monad m => String -> m aとなっていて、それぞれのモナド毎に異なる挙動となる。 fail function of monad
のサンプルを動かします。但し、待ち時間を除きます。 Beginning Haskell - A Project-Based Approach | Alejandro Serrano Mena | ApressのWebアプリの説明では、フレームワークとしてscottyを使っているので、導入してみました。 バージョンの確認 webapp …
直和型を構成するところがわからなかったので写経してみました。 論文のコードと異なるところは Functorはderivingした 適宜showを実装した Exprにデストラクタoutを追加 Free Monadの構成のところで、Applicativeを追加した(ただし、Applicativeの実装はわ…
Reader Monad は 昔 Environment Monad と呼ばれていたそうです。 Control.Monad.Reader ということで(!?)、設定ファイルを使う体で例を作ってみました。 設定ファイルを使わないと、 doJob123' = \x -> doJob3' x $ doJob2' x $ doJob1' x () となります。…
Readerモナドはdependency Injectionとして理解してみると良いかもしれません。 slides.com Java開発で言えば、Web開発でよくDependency Injectionがでてきます。例えば、フレームワークにSpringをつかうと、こんな感じでしょうか。 package hello; import o…
map > :t map map :: (a -> b) -> [a] -> [b] fmap > :t fmap fmap :: Functor f => (a -> b) -> f a -> f b traverse > :t traverse traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) mapM > :t mapM mapM :: (Traversable t, …
「すごいHaskellたのしく学ぼう!」https://www.amazon.co.jp/dp/B009RO80XY/と並行して、Beginning Haskell A Project-Based Approachを読んでみようかと思いました。 www.apress.com が、誤記が多いらしく、お勧めできないようです。