2016-06-22 10 views
1

これは私の前の質問にanswerのフォローアップです。Functorsの構成の例

私たちは、ファンクタが構成することを知っています。それはscalazでファンクタを構成する正しい方法

import scalaz._, Scalaz._ 

scala> val flist = Functor[List] 
flist: scalaz.Functor[List] = [email protected] 

scala> val foption = Functor[Option] 
foption: scalaz.Functor[Option] = [email protected] 

scala> flist compose foption 
res0: scalaz.Functor[[α]List[Option[α]]] = [email protected] 

scala> val f = flist compose foption 
f: scalaz.Functor[[α]List[Option[α]]] = [email protected] 

scala> val os: List[Option[Int]] = Some(1) :: Some(2) :: None :: Nil 
os: List[Option[Int]] = List(Some(1), Some(2), None) 

scala> f.map(os) {_ + 1} 
res1: List[Option[Int]] = List(Some(2), Some(3), None) 

です:私はこのようなscalazを使用してファンクタList[_]Option[_]の構図を書き込むことができますか?
実生活ファンクショナルコンポジションの例はありますか?

+0

既存の質問を繰り返しませんか? http://stackoverflow.com/questions/31284131/how-to-simplify-nested-map-calls – ZhekaKozlov

+0

部分的に。私は今、ファンクタをどのように作成するのか知っています。ところであなたの答えをありがとう:)今、私はファンクタの構成の_real-life_例に興味があります。 – Michael

+0

リスト内のオプションを十分にマッピングしていないのですか? – ZhekaKozlov

答えて

1

文字列のリストがあり、各文字列は文字のリストであるとします。 2つのリスト・ファンクタを構成することにより、ファンクタの文字列のリストが得られます。これで、toUpperやtoLowerなどの文字の関数を文字列のリストにマップできるようになりました。

この例は現実的ですか?:-)

+0

はい、これは良い例です。 – Michael