Oui, cela doit dépendre des langages qu'on leur enseigne et comment l'on s'y prend. J'aimerai bien voir un esprit non matheux faire du Haskell ! Rien que pour faire des entrées-sorties, il faut déjà passer par la monade IO. Heu ? C'est quoi une monade ? C'est simple, c'est juste un monoïde dans la catégorie des enfodoncteurs ! :-D
Sinon, on fait comment pour traduire naturellement les concepts de bases de l'algèbre en OCaml ? C'est simple :
(* un concept mathématique est un type dans les cas des structures, ce sont des modules*)moduletypeGroupe=sigtypetvalzero:tvaladd:t->t->tvalneg:t->tendmoduletypeAnneau=sigincludeGroupevalone:tvalmul:t->t->tend(* maintenant on définit le polynôme `x2 + x + 1` *)letpoly(typea)(moduleR:Anneauwithtypet=a)x=let(+),(*)=R.(add,mul)inx*x+x+R.one(* on l'utilise sur différents anneaux *)poly(moduleInt)5;;-:int=31poly(moduleFloat)5.4;;-:float=35.56(* la notion d'anneau produit *)moduleProd(R:Anneau)(S:Anneau):Anneauwithtypet=R.t*S.t=structtypet=R.t*S.tletzero=(R.zero,S.zero)letone=(R.one,S.one)letadd(x,y)(x',y')=(R.addxx',S.addyy')letmul(x,y)(x',y')=(R.mulxx',S.mulyy')letneg(x,y)(x',y')=(R.negxx',S.negyy')end(* utilisation *)poly(moduleProd(Int)(Float))(5,5.4);;-:int*float=(31,35.56)
Bon, la syntaxe est un peu lourde pour définir le polynôme, mais bientôt on pourra se contenter de:
letpoly(R:Anneau)x=...
En Haskell, on passerait par des types classes avec une syntaxe plus légère et il ne serait même pas nécessaire de passer explicitement l'anneau en paramètre lors de l'appel de fonction. En Rust, ce serait avec des Traits avec une syntaxe aussi lourde et sans instantiation explicite de l'anneau.
On peut ensuite continuer la hiérarchie des structures algébriques:
On fait comment dans les autres langages pour formaliser tout ça ? Le premier qui me propose un idiome de POO (comme en C++ ou Python), je l'envoie au piquet et lui demande de retourner étudier l'algèbre ! :-P
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.
[^] # Re: Pas mieux
Posté par kantien . En réponse au lien Apprendre la programmation en Python n'est pas plus facile qu'en Java ou en C++. Évalué à 1. Dernière modification le 11 décembre 2024 à 09:40.
Oui, cela doit dépendre des langages qu'on leur enseigne et comment l'on s'y prend. J'aimerai bien voir un esprit non matheux faire du Haskell ! Rien que pour faire des entrées-sorties, il faut déjà passer par la monade IO. Heu ? C'est quoi une monade ? C'est simple, c'est juste un monoïde dans la catégorie des enfodoncteurs ! :-D
Sinon, on fait comment pour traduire naturellement les concepts de bases de l'algèbre en OCaml ? C'est simple :
Bon, la syntaxe est un peu lourde pour définir le polynôme, mais bientôt on pourra se contenter de:
En Haskell, on passerait par des types classes avec une syntaxe plus légère et il ne serait même pas nécessaire de passer explicitement l'anneau en paramètre lors de l'appel de fonction. En Rust, ce serait avec des Traits avec une syntaxe aussi lourde et sans instantiation explicite de l'anneau.
On peut ensuite continuer la hiérarchie des structures algébriques:
On fait comment dans les autres langages pour formaliser tout ça ? Le premier qui me propose un idiome de POO (comme en C++ ou Python), je l'envoie au piquet et lui demande de retourner étudier l'algèbre ! :-P
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.