タグ

lensに関するjoan9のブックマーク (11)

  • Stateモナドが便利に使えた! - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Stateモナドが便利に使えた! - Qiita
  • Lens&Prism勉強会 私的まとめ :: Igreque -> Info

    Lens&Prism勉強会 私的まとめ by Yuji Yamamoto on June 9, 2015 もう開催から1週間以上経ってしまいましたが、Lens&Prism勉強会に行ってきたのでそのまとめ記事です。 当日しこしことっていたメモと記憶を頼りに、発表内容や個人的な気付きなどを書きます。 @gakuzzzzさんの「Lensの説明」 connpassには別のスライドが貼ってありますが、実際の中身はBeyond Scala Lensというスライドの日語での解説でした。 要約するとこんな感じの表に収まるのですかね。 スライドではScalaでの呼び名で説明されてましたが、ここでは私向けにHaskellに訳しています。 -- 全てのsをaに変換でき、かつ全てのaをsに変換できる関数のペア Iso' s a: f :: s -> a, g :: a -> s -- 全てのsからaに変換できる

  • LensでHaskellをもっと格好良く!

    LensでHaskellを もっと格好良く!2015/5/30 Lens&Prism勉強会 by ちゅーん(@its_out_of_tune)

  • Haskellのlensの使い方 (詳しめ) - みゆっきのにっき

    ekmett先生のlensに関して Haskellのlensの使い方 (基)の続き Lens,Getter,SetterからEquality,Iso,Prism,Reviewに関して Equality 1 type Equality s t a b = forall p f. p a (f b) -> p s (f t) A witness that (a ~ s, b ~ t). 図の一番下にある。 aとs,bとtが等しいことを示す。同時に2つの等号を表すのはlensとして使うためであろう。 1 2 type Equality s t a b = forall p f. p a (f b) -> p s (f t) type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t のようにLensと比較すると、その(->

  • Haskellのlensの使い方 (基本) - みゆっきのにっき

    ekmett先生のlensに関して Lens'は便利に使えはするけど、Prism,Iso,Traversal,Foldみたいなのは触ったことがなかったので調べた。 Lensの利用 1 import Control.Lens して 1 2 3 4 5 6 >>> ("hello",("world","!!!")) ^. _2 . _1 "world" >>> ("hello",("world","!!!")) & _2 . _1 .~ 42 ("hello",(42,"!!!")) >>> ("hello",("world","!!!")) & _2 . _1 %~ map toUpper ("hello",("WORLD","!!!")) みたいに使う。優先順位は以下のようになっている: 1 2 3 >>> ("hello",("world","!!!")) ^. (_2 . _1) >>

    Haskellのlensの使い方 (基本) - みゆっきのにっき
  • Lensで行こう! - Just $ A sandbox

    続編:Lensで行こう!(2):Isoへの拡張 - みょんさんの。 Lensとは Lens(http://hackage.haskell.org/package/lens-3.7.1.2)というパッケージがあります。 非常に大きなパッケージで、中には非常に便利な函数群がたくさん揃っています。 私が調べた限りでは、 "Lens package in Haskell(HaskellのLensパッケージ)" の解説記事はData.Lens(http://hackage.haskell.org/package/lenses-0.1.6)がやたらとヒットするのですが、こちらよりもControl.Lensとその周りのパッケージ群(この段落の最初にリンクが貼ってある方です)の方が色々と便利でたくさんの函数が揃っているので、ぜひConrol.Lensの方を使ってください*1。 さて、Lensって何が出来る

    Lensで行こう! - Just $ A sandbox
  • LensちゃんマジLens - capriccioso String Creating(Object something){ return My.Expression(something); }

    なんとゆーか、もともと手元にあるものを使ってちくちく何かをするのが好きなので、有名なライブラリとか大きいパッケージとか見ても尻込みしてしまってなかなか手を付けられないタイプなのですが、ここへ来て色々後回しにしてたツケが回ってきた感あります。 はい、そんな感じでここ数日、ようやくcabalの洗礼を受ける事ができました、ちゅーんさんです。 んで、仕事の間を縫ってゲーム作ったりなんかも、カタツムリの歩みで進めていたりもするのですが、急遽Lensを理解する必要がでてきたので今日はLensの導入やります。 あ、あとYesodを覚えようと思ったのですが、どうもこのライブラリ、一通り使えるようになるまでが修羅の道らしく、髪の毛を掻きむしりながらcabalと格闘してやっとインストールができたと思ったら今度はyesod develで詰んだり*1してます。 そんなこんなで、今日はLensの導入やりますってば。

    LensちゃんマジLens - capriccioso String Creating(Object something){ return My.Expression(something); }
  • ぷよぷよ in Lens - Qiita

    import Control.Lens import Control.Monad import Control.Monad.State import Data.List import qualified Data.Map as M paint :: M.Map (Int, Int) Char -> (Int, Int) -> Int paint mm pos = evalState (go pos) mm where go (i, j) = do b <- use $ at (i, j) if b == M.lookup pos mm then do at (i, j) ?= 'x' vs <- forM [(1, 0), (-1, 0), (0, 1), (0, -1)] $ \(di, dj) -> go (i + di, j + dj) return $ 1 + sum vs els

    ぷよぷよ in Lens - Qiita
  • Lenses

    Haskell's Lens type generalizes properties (i.e. accessors/mutators) found in other programming languages. For example, C# provides language support to treat properties as ordinary variables: class Point { public double x { get; set; } public double y { get; set; } } class Circle { public Point center { get; set; } public double radius { get; set; } } public void goRight(ref Circle c) { c.center.x

  • Lensことはじめ - あどけない話

    見ろ! Haskell が OOPL のようだ! さてさて、ようやく重い腰を上げて、Lens を勉強し始めましたよ。Haksell for allを見て勉強すればいいのかなと思ったんですが、解説しているパッケージが data-lens なので古いですね。 今、使うべきなのは、lens というパッケージらしいです。解説は、この README を読むのが一番だそうです。この README と Haskell for all をにらめっこしながら、Lens の getter と setter の機能を使ってみます。 背景 Haskell の代数データ型にはフィールドラベルが定義できて、これがいわゆる getter と setter の役割を果たします。Haskell for all から例を引用してみましょう。 data Point = Point { x :: Double , y :: Do

    Lensことはじめ - あどけない話
  • Haskellで特異メソッド - nushio's diary

    (この記事はHaskell Advent Calendar 2012の記事です。) HaskellでReal World Problemを解いていると、オブジェクト指向でいうところのオブジェクトを作りたくなることはよくあります。Haskellでは、だいたい代数データ型とレコード構文がその役割を担ってきました。Haskellはレコードを自由に扱えなかったのですが、Lensの登場により、レコードは苦手科目から超得意科目へと変わりつつあります。 それでも、データ型は何だか融通が聞かない奴、という感じがします。開発途上で新しいレコードを追加したくなることはよくありますが、そもそもデータ型を定義しなおすのは面倒ですし、データ型を定義しなおしたら、その型の値を作っているところをすべて書き直さねばなりません。 あまつさえリアルワールドでは、全ての値についてレコードの値が得られないこともあるし、レコードを

    Haskellで特異メソッド - nushio's diary
  • 1