Godzil (./30146) :
"fn" pour dire qu'on a affaire a une nouvelle fonction (autant mettre fonction non? on est plus a 40col depuis 40 ans)
Godzil (./30146) :C'est un problème de raccourcir les mots clés ultra courants? Pour moi c'est pas du tout indispensable mais quand même bien pratique.
(comme "let mut" pour dire qu'on déclare une variable qui peux être "mutated" (oui hein écrire parce que "mutated" au complet c'est trop chiant))
Godzil (./30146) :Un peu contradictoire avec ton point précédent. Tu t’embête certainement bien plus à écrire "function" et "mutable" en entier que "->". Et franchement on a pas a écrire le type retour d'une fonction assez souvent pour que je trouve que ce soit un problème.
et le -> pour donne le type de retour est un choix TRES TRES malheureux.
Godzil (./30146) :Ça te choque surtout probablement à cause de l'habitude. Ça me paraissait bizarre au début mais, une fois que je m'y suis fait, je trouve ça beaucoup mieux, c'est beaucoup plus lisible on reconnait au premier coup d’œil les déclarations dans un code vu qu'elles commencent par un mot clé.
le prototype de fonctions classique a la C/C++ marche tres bien, pourquoi forcement vouloir inventer des trucs tout sauf pratique?Et ça ne rends pas le code concrètement plus lisible, au contraire je trouve.
De toute façon, encore une fois pour moi c'est vraiment du détail.
Godzil (./30146) :
Pitié non... Rentre "return" optionel.... sérieusement? Il se sont dit tiens on tape trop de caractères donc on va faire qu'on puisse en taper moins?
Non c'est plutôt pour permettre de faire des chose du genre:
let x = if condition { toto(); 42 } else { 0 }notamment avec les lambda, ça permet de faire des trucs quand même bien moins chargé.
Godzil (./30146) :Non tu vas avoir une erreur de compilation, car tu as deux expressions à la suite sans opération entre elles. Les instructions non retournées se terminent par un point virgule.
Genre je fait appel a la fonction toto qui fait unTruc© et retourne la valeur 42, je fait :fn factorial_recursive(n: u32) -> u32 { if n <= 1 { toto() 1 } else { n * factorial_recursive(n - 1) } }Ben je me bouffe un 42 a la place de 1? C'est beau hein!
Godzil (./30146) :Globalement le typage est bien plus strict que C et C++, il n'y a notamment pas de conversion implicites.
En plus le typage n'a pas l'air d'etre du typage fort vu qu'on peux definir des variable sans dire explicitement le type, c'est plutot contre-indique pour faire du système ça..
Le typage des variable et lambda peut-être implicite, certes, mais c'est tout. Partout ailleurs, il faut préciser le type, ce qui limite le risque d'abus, contrairement à l'auto de C++.
Godzil (./30146) :Bah franchement tes arguments me paraissent très superficiels et uniquement sur des points de la syntaxe, pour arriver a une conclusion aussi péremptoire. Un langage c'est quand même bien plus que ça.
Non désolé, je ne peux pas prendre se langage au sérieux.