Pour l'implémentation en C, c'est plus que tester la validité d'un paramètre. C'est une implémentation du monad Maybe d'Haskell qui permet de simuler sans en avoir les problèmes d'effet de bord du null pointer. Le concept du null ou nil a été introduit par Hoare qui, par la suite, l'a regretté car celui-ci introduit des effets de bords indésirables, ce qui conduit au programmeur d'être sur la défensive. Dans Haskell, une variable peut être de type Maybe a, c'est à dire c'est soit une valeur de type a, soit il est rien (il n'est pas initialisé) ; on dit que c'est une variable ou valeur monadique. La monad Maybe permet de représenter et d'informer de la possibilité qu'une donnée peut être nulle. Ceci permet alors d'utiliser des fonctions sur ces types de données sans se faire avoir par surprise par un effet de bord indésirable (de toute façon le compilateur nous rappelle à l'ordre).
Pour l'implémentation en Perl, elle est longue et je ne l'ai que rapidement lu. Son objectif semble de modéliser en Perl les monads (structure qui implémente la notion de changement d'état et qui implique donc aussi une séquence nécessaire des opérations). Ici l'objectif est de prendre une valeur monadique (autrement dit une variable) et d'appliquer sur celle-ci des fonctions pour en ressortir une autre valeur monadique. (De cette valeur monadique, on peut en sortir une valeur pure qui peut donc ne plus être modifiée.) Avec bind, on peut appliquer une fonction pure sur des valeurs monadiques. En singularisant les effets de bords, on peut plus facilement les contrôler. Après, selon le langage, ça peut rendre le code lourd.
[^] # Re: Quelques petites rectifications et une question
Posté par Miguel Moquillon (site web personnel) . En réponse au journal Go : Un nouveau langage chez Google. Évalué à 1.
Pour l'implémentation en Perl, elle est longue et je ne l'ai que rapidement lu. Son objectif semble de modéliser en Perl les monads (structure qui implémente la notion de changement d'état et qui implique donc aussi une séquence nécessaire des opérations). Ici l'objectif est de prendre une valeur monadique (autrement dit une variable) et d'appliquer sur celle-ci des fonctions pour en ressortir une autre valeur monadique. (De cette valeur monadique, on peut en sortir une valeur pure qui peut donc ne plus être modifiée.) Avec bind, on peut appliquer une fonction pure sur des valeurs monadiques. En singularisant les effets de bords, on peut plus facilement les contrôler. Après, selon le langage, ça peut rendre le code lourd.