Movatterモバイル変換


[0]ホーム

URL:


base-4.12.0.0: Basic libraries

CopyrightConor McBride and Ross Paterson 2005
LicenseBSD-style (see the LICENSE file in the distribution)
Maintainerlibraries@haskell.org
Stabilityexperimental
Portabilityportable
Safe HaskellTrustworthy
LanguageHaskell2010

Data.Traversable

Contents

Description

Class of data structures that can be traversed from left to right, performing an action on each element.

See also

Synopsis

TheTraversable class

class (Functor t,Foldable t) =>Traversable twhereSource#

Functors representing data structures that can be traversed from left to right.

A definition oftraverse must satisfy the following laws:

naturality
t .traverse f =traverse (t . f) for every applicative transformationt
identity
traverse Identity = Identity
composition
traverse (Compose .fmap g . f) = Compose .fmap (traverse g) .traverse f

A definition ofsequenceA must satisfy the following laws:

naturality
t .sequenceA =sequenceA .fmap t for every applicative transformationt
identity
sequenceA .fmap Identity = Identity
composition
sequenceA .fmap Compose = Compose .fmapsequenceA .sequenceA

where anapplicative transformation is a function

t :: (Applicative f, Applicative g) => f a -> g a

preserving theApplicative operations, i.e.

and the identity functorIdentity and composition of functorsCompose are defined as

  newtype Identity a = Identity a  instance Functor Identity where    fmap f (Identity x) = Identity (f x)  instance Applicative Identity where    pure x = Identity x    Identity f <*> Identity x = Identity (f x)  newtype Compose f g a = Compose (f (g a))  instance (Functor f, Functor g) => Functor (Compose f g) where    fmap f (Compose x) = Compose (fmap (fmap f) x)  instance (Applicative f, Applicative g) => Applicative (Compose f g) where    pure x = Compose (pure (pure x))    Compose f <*> Compose x = Compose ((<*>) <$> f <*> x)

(The naturality law is implied by parametricity.)

Instances are similar toFunctor, e.g. given a data type

data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)

a suitable instance would be

instance Traversable Tree where   traverse f Empty = pure Empty   traverse f (Leaf x) = Leaf <$> f x   traverse f (Node l k r) = Node <$> traverse f l <*> f k <*> traverse f r

This is suitable even for abstract types, as the laws for<*> imply a form of associativity.

The superclass instances should satisfy the following:

Minimal complete definition

traverse |sequenceA

Methods

traverse ::Applicative f => (a -> f b) -> t a -> f (t b)Source#

Map each element of a structure to an action, evaluate these actions from left to right, and collect the results. For a version that ignores the results seetraverse_.

sequenceA ::Applicative f => t (f a) -> f (t a)Source#

Evaluate each action in the structure from left to right, and collect the results. For a version that ignores the results seesequenceA_.

mapM ::Monad m => (a -> m b) -> t a -> m (t b)Source#

Map each element of a structure to a monadic action, evaluate these actions from left to right, and collect the results. For a version that ignores the results seemapM_.

sequence ::Monad m => t (m a) -> m (t a)Source#

Evaluate each monadic action in the structure from left to right, and collect the results. For a version that ignores the results seesequence_.

Instances
Traversable []Source#

Since: 2.1

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) -> [a] -> f [b]Source#

sequenceA ::Applicative f => [f a] -> f [a]Source#

mapM ::Monad m => (a -> m b) -> [a] -> m [b]Source#

sequence ::Monad m => [m a] -> m [a]Source#

TraversableMaybeSource#

Since: 2.1

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Maybe a -> f (Maybe b)Source#

sequenceA ::Applicative f =>Maybe (f a) -> f (Maybe a)Source#

mapM ::Monad m => (a -> m b) ->Maybe a -> m (Maybe b)Source#

sequence ::Monad m =>Maybe (m a) -> m (Maybe a)Source#

TraversablePar1Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Par1 a -> f (Par1 b)Source#

sequenceA ::Applicative f =>Par1 (f a) -> f (Par1 a)Source#

mapM ::Monad m => (a -> m b) ->Par1 a -> m (Par1 b)Source#

sequence ::Monad m =>Par1 (m a) -> m (Par1 a)Source#

TraversableNonEmptySource#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->NonEmpty a -> f (NonEmpty b)Source#

sequenceA ::Applicative f =>NonEmpty (f a) -> f (NonEmpty a)Source#

mapM ::Monad m => (a -> m b) ->NonEmpty a -> m (NonEmpty b)Source#

sequence ::Monad m =>NonEmpty (m a) -> m (NonEmpty a)Source#

TraversableDownSource#

Since: 4.12.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Down a -> f (Down b)Source#

sequenceA ::Applicative f =>Down (f a) -> f (Down a)Source#

mapM ::Monad m => (a -> m b) ->Down a -> m (Down b)Source#

sequence ::Monad m =>Down (m a) -> m (Down a)Source#

TraversableProductSource#

Since: 4.8.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Product a -> f (Product b)Source#

sequenceA ::Applicative f =>Product (f a) -> f (Product a)Source#

mapM ::Monad m => (a -> m b) ->Product a -> m (Product b)Source#

sequence ::Monad m =>Product (m a) -> m (Product a)Source#

TraversableSumSource#

Since: 4.8.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Sum a -> f (Sum b)Source#

sequenceA ::Applicative f =>Sum (f a) -> f (Sum a)Source#

mapM ::Monad m => (a -> m b) ->Sum a -> m (Sum b)Source#

sequence ::Monad m =>Sum (m a) -> m (Sum a)Source#

TraversableDualSource#

Since: 4.8.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Dual a -> f (Dual b)Source#

sequenceA ::Applicative f =>Dual (f a) -> f (Dual a)Source#

mapM ::Monad m => (a -> m b) ->Dual a -> m (Dual b)Source#

sequence ::Monad m =>Dual (m a) -> m (Dual a)Source#

TraversableLastSource#

Since: 4.8.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Last a -> f (Last b)Source#

sequenceA ::Applicative f =>Last (f a) -> f (Last a)Source#

mapM ::Monad m => (a -> m b) ->Last a -> m (Last b)Source#

sequence ::Monad m =>Last (m a) -> m (Last a)Source#

TraversableFirstSource#

Since: 4.8.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->First a -> f (First b)Source#

sequenceA ::Applicative f =>First (f a) -> f (First a)Source#

mapM ::Monad m => (a -> m b) ->First a -> m (First b)Source#

sequence ::Monad m =>First (m a) -> m (First a)Source#

TraversableIdentitySource#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Identity a -> f (Identity b)Source#

sequenceA ::Applicative f =>Identity (f a) -> f (Identity a)Source#

mapM ::Monad m => (a -> m b) ->Identity a -> m (Identity b)Source#

sequence ::Monad m =>Identity (m a) -> m (Identity a)Source#

TraversableZipListSource#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->ZipList a -> f (ZipList b)Source#

sequenceA ::Applicative f =>ZipList (f a) -> f (ZipList a)Source#

mapM ::Monad m => (a -> m b) ->ZipList a -> m (ZipList b)Source#

sequence ::Monad m =>ZipList (m a) -> m (ZipList a)Source#

TraversableOptionSource#

Since: 4.9.0.0

Instance details

Defined inData.Semigroup

Methods

traverse ::Applicative f => (a -> f b) ->Option a -> f (Option b)Source#

sequenceA ::Applicative f =>Option (f a) -> f (Option a)Source#

mapM ::Monad m => (a -> m b) ->Option a -> m (Option b)Source#

sequence ::Monad m =>Option (m a) -> m (Option a)Source#

TraversableLastSource#

Since: 4.9.0.0

Instance details

Defined inData.Semigroup

Methods

traverse ::Applicative f => (a -> f b) ->Last a -> f (Last b)Source#

sequenceA ::Applicative f =>Last (f a) -> f (Last a)Source#

mapM ::Monad m => (a -> m b) ->Last a -> m (Last b)Source#

sequence ::Monad m =>Last (m a) -> m (Last a)Source#

TraversableFirstSource#

Since: 4.9.0.0

Instance details

Defined inData.Semigroup

Methods

traverse ::Applicative f => (a -> f b) ->First a -> f (First b)Source#

sequenceA ::Applicative f =>First (f a) -> f (First a)Source#

mapM ::Monad m => (a -> m b) ->First a -> m (First b)Source#

sequence ::Monad m =>First (m a) -> m (First a)Source#

TraversableMaxSource#

Since: 4.9.0.0

Instance details

Defined inData.Semigroup

Methods

traverse ::Applicative f => (a -> f b) ->Max a -> f (Max b)Source#

sequenceA ::Applicative f =>Max (f a) -> f (Max a)Source#

mapM ::Monad m => (a -> m b) ->Max a -> m (Max b)Source#

sequence ::Monad m =>Max (m a) -> m (Max a)Source#

TraversableMinSource#

Since: 4.9.0.0

Instance details

Defined inData.Semigroup

Methods

traverse ::Applicative f => (a -> f b) ->Min a -> f (Min b)Source#

sequenceA ::Applicative f =>Min (f a) -> f (Min a)Source#

mapM ::Monad m => (a -> m b) ->Min a -> m (Min b)Source#

sequence ::Monad m =>Min (m a) -> m (Min a)Source#

TraversableComplexSource#

Since: 4.9.0.0

Instance details

Defined inData.Complex

Methods

traverse ::Applicative f => (a -> f b) ->Complex a -> f (Complex b)Source#

sequenceA ::Applicative f =>Complex (f a) -> f (Complex a)Source#

mapM ::Monad m => (a -> m b) ->Complex a -> m (Complex b)Source#

sequence ::Monad m =>Complex (m a) -> m (Complex a)Source#

Traversable (Either a)Source#

Since: 4.7.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a0 -> f b) ->Either a a0 -> f (Either a b)Source#

sequenceA ::Applicative f =>Either a (f a0) -> f (Either a a0)Source#

mapM ::Monad m => (a0 -> m b) ->Either a a0 -> m (Either a b)Source#

sequence ::Monad m =>Either a (m a0) -> m (Either a a0)Source#

Traversable (V1 ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->V1 a -> f (V1 b)Source#

sequenceA ::Applicative f =>V1 (f a) -> f (V1 a)Source#

mapM ::Monad m => (a -> m b) ->V1 a -> m (V1 b)Source#

sequence ::Monad m =>V1 (m a) -> m (V1 a)Source#

Traversable (U1 ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->U1 a -> f (U1 b)Source#

sequenceA ::Applicative f =>U1 (f a) -> f (U1 a)Source#

mapM ::Monad m => (a -> m b) ->U1 a -> m (U1 b)Source#

sequence ::Monad m =>U1 (m a) -> m (U1 a)Source#

Traversable ((,) a)Source#

Since: 4.7.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a0 -> f b) -> (a, a0) -> f (a, b)Source#

sequenceA ::Applicative f => (a, f a0) -> f (a, a0)Source#

mapM ::Monad m => (a0 -> m b) -> (a, a0) -> m (a, b)Source#

sequence ::Monad m => (a, m a0) -> m (a, a0)Source#

Traversable (Proxy ::Type ->Type)Source#

Since: 4.7.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Proxy a -> f (Proxy b)Source#

sequenceA ::Applicative f =>Proxy (f a) -> f (Proxy a)Source#

mapM ::Monad m => (a -> m b) ->Proxy a -> m (Proxy b)Source#

sequence ::Monad m =>Proxy (m a) -> m (Proxy a)Source#

Traversable (Arg a)Source#

Since: 4.9.0.0

Instance details

Defined inData.Semigroup

Methods

traverse ::Applicative f => (a0 -> f b) ->Arg a a0 -> f (Arg a b)Source#

sequenceA ::Applicative f =>Arg a (f a0) -> f (Arg a a0)Source#

mapM ::Monad m => (a0 -> m b) ->Arg a a0 -> m (Arg a b)Source#

sequence ::Monad m =>Arg a (m a0) -> m (Arg a a0)Source#

Traversable f =>Traversable (Rec1 f)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f0 => (a -> f0 b) ->Rec1 f a -> f0 (Rec1 f b)Source#

sequenceA ::Applicative f0 =>Rec1 f (f0 a) -> f0 (Rec1 f a)Source#

mapM ::Monad m => (a -> m b) ->Rec1 f a -> m (Rec1 f b)Source#

sequence ::Monad m =>Rec1 f (m a) -> m (Rec1 f a)Source#

Traversable (URecChar ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->URecChar a -> f (URecChar b)Source#

sequenceA ::Applicative f =>URecChar (f a) -> f (URecChar a)Source#

mapM ::Monad m => (a -> m b) ->URecChar a -> m (URecChar b)Source#

sequence ::Monad m =>URecChar (m a) -> m (URecChar a)Source#

Traversable (URecDouble ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->URecDouble a -> f (URecDouble b)Source#

sequenceA ::Applicative f =>URecDouble (f a) -> f (URecDouble a)Source#

mapM ::Monad m => (a -> m b) ->URecDouble a -> m (URecDouble b)Source#

sequence ::Monad m =>URecDouble (m a) -> m (URecDouble a)Source#

Traversable (URecFloat ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->URecFloat a -> f (URecFloat b)Source#

sequenceA ::Applicative f =>URecFloat (f a) -> f (URecFloat a)Source#

mapM ::Monad m => (a -> m b) ->URecFloat a -> m (URecFloat b)Source#

sequence ::Monad m =>URecFloat (m a) -> m (URecFloat a)Source#

Traversable (URecInt ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->URecInt a -> f (URecInt b)Source#

sequenceA ::Applicative f =>URecInt (f a) -> f (URecInt a)Source#

mapM ::Monad m => (a -> m b) ->URecInt a -> m (URecInt b)Source#

sequence ::Monad m =>URecInt (m a) -> m (URecInt a)Source#

Traversable (URecWord ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->URecWord a -> f (URecWord b)Source#

sequenceA ::Applicative f =>URecWord (f a) -> f (URecWord a)Source#

mapM ::Monad m => (a -> m b) ->URecWord a -> m (URecWord b)Source#

sequence ::Monad m =>URecWord (m a) -> m (URecWord a)Source#

Traversable (URec (Ptr ()) ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->URec (Ptr ()) a -> f (URec (Ptr ()) b)Source#

sequenceA ::Applicative f =>URec (Ptr ()) (f a) -> f (URec (Ptr ()) a)Source#

mapM ::Monad m => (a -> m b) ->URec (Ptr ()) a -> m (URec (Ptr ()) b)Source#

sequence ::Monad m =>URec (Ptr ()) (m a) -> m (URec (Ptr ()) a)Source#

Traversable f =>Traversable (Alt f)Source#

Since: 4.12.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f0 => (a -> f0 b) ->Alt f a -> f0 (Alt f b)Source#

sequenceA ::Applicative f0 =>Alt f (f0 a) -> f0 (Alt f a)Source#

mapM ::Monad m => (a -> m b) ->Alt f a -> m (Alt f b)Source#

sequence ::Monad m =>Alt f (m a) -> m (Alt f a)Source#

Traversable f =>Traversable (Ap f)Source#

Since: 4.12.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f0 => (a -> f0 b) ->Ap f a -> f0 (Ap f b)Source#

sequenceA ::Applicative f0 =>Ap f (f0 a) -> f0 (Ap f a)Source#

mapM ::Monad m => (a -> m b) ->Ap f a -> m (Ap f b)Source#

sequence ::Monad m =>Ap f (m a) -> m (Ap f a)Source#

Traversable (Const m ::Type ->Type)Source#

Since: 4.7.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->Const m a -> f (Const m b)Source#

sequenceA ::Applicative f =>Const m (f a) -> f (Const m a)Source#

mapM ::Monad m0 => (a -> m0 b) ->Const m a -> m0 (Const m b)Source#

sequence ::Monad m0 =>Const m (m0 a) -> m0 (Const m a)Source#

Traversable (K1 i c ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->K1 i c a -> f (K1 i c b)Source#

sequenceA ::Applicative f =>K1 i c (f a) -> f (K1 i c a)Source#

mapM ::Monad m => (a -> m b) ->K1 i c a -> m (K1 i c b)Source#

sequence ::Monad m =>K1 i c (m a) -> m (K1 i c a)Source#

(Traversable f,Traversable g) =>Traversable (f:+: g)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f0 => (a -> f0 b) -> (f:+: g) a -> f0 ((f:+: g) b)Source#

sequenceA ::Applicative f0 => (f:+: g) (f0 a) -> f0 ((f:+: g) a)Source#

mapM ::Monad m => (a -> m b) -> (f:+: g) a -> m ((f:+: g) b)Source#

sequence ::Monad m => (f:+: g) (m a) -> m ((f:+: g) a)Source#

(Traversable f,Traversable g) =>Traversable (f:*: g)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f0 => (a -> f0 b) -> (f:*: g) a -> f0 ((f:*: g) b)Source#

sequenceA ::Applicative f0 => (f:*: g) (f0 a) -> f0 ((f:*: g) a)Source#

mapM ::Monad m => (a -> m b) -> (f:*: g) a -> m ((f:*: g) b)Source#

sequence ::Monad m => (f:*: g) (m a) -> m ((f:*: g) a)Source#

(Traversable f,Traversable g) =>Traversable (Sum f g)Source#

Since: 4.9.0.0

Instance details

Defined inData.Functor.Sum

Methods

traverse ::Applicative f0 => (a -> f0 b) ->Sum f g a -> f0 (Sum f g b)Source#

sequenceA ::Applicative f0 =>Sum f g (f0 a) -> f0 (Sum f g a)Source#

mapM ::Monad m => (a -> m b) ->Sum f g a -> m (Sum f g b)Source#

sequence ::Monad m =>Sum f g (m a) -> m (Sum f g a)Source#

(Traversable f,Traversable g) =>Traversable (Product f g)Source#

Since: 4.9.0.0

Instance details

Defined inData.Functor.Product

Methods

traverse ::Applicative f0 => (a -> f0 b) ->Product f g a -> f0 (Product f g b)Source#

sequenceA ::Applicative f0 =>Product f g (f0 a) -> f0 (Product f g a)Source#

mapM ::Monad m => (a -> m b) ->Product f g a -> m (Product f g b)Source#

sequence ::Monad m =>Product f g (m a) -> m (Product f g a)Source#

Traversable f =>Traversable (M1 i c f)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f0 => (a -> f0 b) ->M1 i c f a -> f0 (M1 i c f b)Source#

sequenceA ::Applicative f0 =>M1 i c f (f0 a) -> f0 (M1 i c f a)Source#

mapM ::Monad m => (a -> m b) ->M1 i c f a -> m (M1 i c f b)Source#

sequence ::Monad m =>M1 i c f (m a) -> m (M1 i c f a)Source#

(Traversable f,Traversable g) =>Traversable (f:.: g)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f0 => (a -> f0 b) -> (f:.: g) a -> f0 ((f:.: g) b)Source#

sequenceA ::Applicative f0 => (f:.: g) (f0 a) -> f0 ((f:.: g) a)Source#

mapM ::Monad m => (a -> m b) -> (f:.: g) a -> m ((f:.: g) b)Source#

sequence ::Monad m => (f:.: g) (m a) -> m ((f:.: g) a)Source#

(Traversable f,Traversable g) =>Traversable (Compose f g)Source#

Since: 4.9.0.0

Instance details

Defined inData.Functor.Compose

Methods

traverse ::Applicative f0 => (a -> f0 b) ->Compose f g a -> f0 (Compose f g b)Source#

sequenceA ::Applicative f0 =>Compose f g (f0 a) -> f0 (Compose f g a)Source#

mapM ::Monad m => (a -> m b) ->Compose f g a -> m (Compose f g b)Source#

sequence ::Monad m =>Compose f g (m a) -> m (Compose f g a)Source#

Utility functions

for :: (Traversable t,Applicative f) => t a -> (a -> f b) -> f (t b)Source#

for istraverse with its arguments flipped. For a version that ignores the results seefor_.

forM :: (Traversable t,Monad m) => t a -> (a -> m b) -> m (t b)Source#

forM ismapM with its arguments flipped. For a version that ignores the results seeforM_.

mapAccumL ::Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)Source#

ThemapAccumL function behaves like a combination offmap andfoldl; it applies a function to each element of a structure, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new structure.

mapAccumR ::Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)Source#

ThemapAccumR function behaves like a combination offmap andfoldr; it applies a function to each element of a structure, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new structure.

General definitions for superclass methods

fmapDefault ::forall t a b.Traversable t => (a -> b) -> t a -> t bSource#

This function may be used as a value forfmap in aFunctor instance, provided thattraverse is defined. (UsingfmapDefault with aTraversable instance defined only bysequenceA will result in infinite recursion.)

fmapDefault f ≡runIdentity .traverse (Identity . f)

foldMapDefault ::forall t m a. (Traversable t,Monoid m) => (a -> m) -> t a -> mSource#

This function may be used as a value forfoldMap in aFoldable instance.

foldMapDefault f ≡getConst .traverse (Const . f)

Produced byHaddock version 2.20.0


[8]ページ先頭

©2009-2025 Movatter.jp