• Aucun résultat trouvé

Principes de Programmation TD4

N/A
N/A
Protected

Academic year: 2022

Partager "Principes de Programmation TD4"

Copied!
2
0
0

Texte intégral

(1)

Principes de Programmation TD4

27 mars 2018

Exercice 1 (Une monade est un foncteur).

On rappelle que la classeFunctorest définie par : class Functor f where

fmap :: (a -> b) -> f a -> f b

La classeMonadest définie par :1 class Monad m where

return :: a -> m a

(=<<) :: (a-> m b) -> m a -> m b

1. Encodez les foncteurs dans les monades. C’est à dire, supposez quemest une monade, et implémentez Functor m.

Cela ne suffit pas pour dire qu’une monade est toujours un foncteur, il faut vérifier aussi les axiomes de foncteur.

On rappelle qu’un foncteur doit vérifier les axiomes suivants :

fmap id = id

fmap (f.g) = fmap f . fmap g

De la même façon, une monade doit vérifier les axiomes suivants : return =<< x = x

f =<< (return x) = f x

f =<< (g =<< x) = (\y -> f =<< (g y) ) =<< x

2. (Dificile) Faites ces vérifications. Càd, supposez quemvérifie les axiomes de monade, et vérifiez que votre encodage vérifie les axiomes de foncteur.

1. Attention, pour des raisons historiques, il faut définir(>>=) ::ma−>(a−> mb)−>

mbplutôt que=<<...

1

(2)

Exercice 2 (Les monades).

On rappelle queMaybeest définie ainsi : data Maybe a = Something a | Nothing

1. Montrez queMaybeest une monade.

On définitEither a bpar

data Either a b = Left a | Right b

2. Montrez que pour touta,Either aest une monade.

3. Montrez que les listes forment une monade.

On définit les arbres de préfixe ainsi :

data Tree a = Node (Char -> Tree a) | Leaf a

4. Montrez que les arbres de préfixe forment une monade.

On définitFuturqui encode le yieldde python : type Tick = ()

data Futur a = Now a | Later (Tick -> Futur a)

5. Montrez queYieldest une monade.

Un type à état est défini (presque) comme suit :

type ST s a = (s -> (a,s))

oùsest le type de l’état courant et aest le type sur lequel on travaille.

6. Montrez queST s forme une monade (quelque soits).

La monade de continuation2est définie par : type Cont r a = (a -> r) -> r

7. Montrez queCont rforme une monade (quelque soitr).

2. importée de Control.Monad.Trans.Cont

2

Références

Documents relatifs

Ce fondeur est isomorphe, en effet, à celui évoqué plus haut lorsque 5' = R d ; mieux, il est aussi isomorphe au foncteur corestriction introduit par Riehm lorsque S / R est

En fait, tout ensemble fini F est injectif (et les injectifs de £ sont précisément les ensembles profinis rétractes d'un produit d'ensembles finis) : soient E c -^ G une

Pour le mot axiome, Aristote l'emploie à peu près dans le même sens que nous, et il nous apprend qu'il était en usage chez les mathématiciens, mais particulièrement pour désigner

L’accès aux archives de la revue « Cahiers de topologie et géométrie différentielle catégoriques » implique l’accord avec les conditions générales d’utilisation

tenseurs et cotenseurs moyens. Soit V une catégorie fermée complète possédant des coproduits et A une petite catégorie.. Rappelons quelques points de

U, nous supposons donné sur K ° un «choix» de limites projectives pour certains foncteurs issus d’un élément de g... Rappel de quelques

On montre qu’un groupoide inductif est ordonné (i.. B engendre une partie q-saturée B’.. Donc HO est une catégorie. On peut montrer que le foncteur local

Le cas qui nous intéresse est celui où A est l'algèbre commutative graduée Ω n des formes diérentielles polynomiales sur le n -simplexe standard ∆ n. Noter que la fonctorialité