前提としているElmのバージョンは0.18.0。
- 実行環境
- リテラル
- 関数
- 型
- 構文
- モジュール
| import javax.servlet._ | |
| import skinny.micro._ | |
| class Bootstrap extends LifeCycle { | |
| override def init(ctx: ServletContext) { | |
| example.App.mount(ctx) | |
| } | |
| } |
| レンズは余状態余モナドの余代数だった | |
| =================================== | |
| 余余余〜!別名`関数的参照`とも呼ばれる[レンズ](https://hackage.haskell.org/package/lens)はJavaのGetter, Setterと同等と[言われる](https://twitter.com/plt_borat/status/228009057670291456)関数型プログラミングのデザインパターンの一つです。 | |
| レンズは余状態余モナドの余代数だと[聞いて](https://twitter.com/hiratara/status/317602743219003392)そうなのかーと思ってたのですが、ふと自分で実装してみたくなったので **余状態余モナドの余代数** として実装してみることにしました。 | |
| ちなみにこの文章は`literate Haskell`という形式で書かれているのでダウンロードしてghciでロードすればすぐにでも自分で試すことができます。 | |
| まず最初におまじない | |
| > {-# LANGUAGE RankNTypes #-} |
| import scalaz._ | |
| import Free.FreeC | |
| class DDD[Entity, ID] { | |
| // repositoryへの操作を代数的データ型で定義し、それをFreeとCoyonedaの力によりモナドにして使う | |
| sealed abstract class RepositoryDSL[A] | |
| // 見つからないかもしれないので結果はOption型 | |
| final case class ResolveBy(id: ID) extends RepositoryDSL[Option[Entity]] |
| public static Observable<List<String>> paginatedThings(final Observable<Void> onNextObservable) { | |
| return Observable.create(new Observable.OnSubscribe<List<String>>() { | |
| @Override | |
| public void call(final Subscriber<? super List<String>> subscriber) { | |
| onNextObservable.subscribe(new Observer<Void>() { | |
| int latestPage = -1; | |
| @Override | |
| public void onCompleted() { | |
| subscriber.onCompleted(); |
| -server | |
| -Xms2g | |
| -Xmx2g | |
| -Xss16m | |
| -XX:+UseConcMarkSweepGC | |
| -XX:+CMSParallelRemarkEnabled | |
| -XX:ConcGCThreads=4 | |
| -XX:ReservedCodeCacheSize=128m | |
| -XX:+AlwaysPreTouch | |
| -XX:+TieredCompilation |
| # -*- encoding:utf-8 -*- | |
| # | |
| # CentOSをセキュアにセットアップするFabricスクリプト | |
| # | |
| # 前提条件 : Fabricインストール済/SSHの公開鍵作成済 | |
| # 実行方法 : fab deploy | |
| # 検証環境 : CentOS6.6 (さくらのVPS 標準OSインストール) | |
| ##################################################################### | |
| from fabric.api import env, run, sudo, put |