型に言及するには,制約が
Monoid
しかないので,情報が足りないのではないでしょうか?Monoid
しかないので,情報が足りないのではないでしょうか?fmap
が多相関数なのでどちらかの則があれば自動的にもう一方を満たします(toList t = build (\ c n -> foldr c n t)
を「並べる」ということだ言ってしまえばその通りかもしれませんが普通の直感とは多分違うような気が。newtype Square a = Square a
fold [] = mempty fold [m1] = m1 <> m1 fold [m1, m2] = m2 fold [m1, m2, m3] = m1 <> m3 <> m2 <> m3 fold [m1, m2, m3, m4] = mempty ...
elems [m1] = [m1,m1] elems [m1,m2] = [m2] ...
Foldable
を見てるかはよく分かりませんが,現状のbase( https://hackage.haskell.org/package/base-4.10.0.0/docs/src/Data.Foldable.html#line-230 )では, toList = build (\ c n -> foldr c n t)
がデフォルトになっています. build
は https://hackage.haskell.org/package/base-4.10.0.0/docs/src/GHC.Base.html#line-871 ですね.リストを作るためのビルダーになっていて, foldr/build変換なども適用されるようになりますtoList [m1] = m1:m1:[] = [m1,m1]
ですね。instance Foldable (Array i)
の中のところでした。'toList = '
で検索したのが失敗だった orz。fold . fmap f = f . fold
は f はモノイド準同型を前提してということですか。f
がモノイド準同型であることが必要ですimport qualified Data.Text as T
とするとT.Text
と型にもTが付くんですか?T.Text
にしたくない場合はこんな感じで定義されてることが多いですね!import Data.Text (Text) import qualified Data.Text as T
Data.Map
を import
する際にも良くみかけます:grinning:import
するもの (関数や型など) を明示的に列挙できます。import Data.Text (Text)
Text
型のみを import
します。その際、 qualified ... as
形式ではないため Text
という表記で利用できます。import qualified Data.Text as T
Text
モジュールで export
されているもの全てが import
されます。(`T.Text`, T.null
, etc...)。こちらは qualified ... as
形式なので全て T.
という修飾詞つきの表記で利用できます。( Prelude
や他のモジュールで定義されている関数 (や型) の名前と被る場合に使います。)import
を2つ書いた場合は Text
型は Text
と T.Text
の両方の形式で利用できるという理解が正しいです。T.Text
って書くの面倒なので Text
しか使わないという感じです。T.Text
を import
しないようにするためには hiding
キーワードを使って明示的に import
しないものを指定します。(`hiding` は暗黙的に Prelude
から import
されているものを隠したい場合によく利用します。 import Prelude hiding (div)
)import Data.Text (Text) import qualified Data.Text as T hiding (Text)
lts-9
系でも stack install ghc-mod
でインストールできたような気がします。haskell-mode
を使っておくのがいいんでしょうか。(というかそれ以外に選択肢がない?)ACME.PreCure.Textbook.KirakiraALaMode.Instances
でインスタンスしか定義していない module を export して、env = fromPairs ["list" .=["AA","BB","CC"]]