Retourner au contenu associé (journal : [Letlang] Et si on rédigeait la spec ?)
Posté par David Delassus (site web personnel) le 09 mai 2022 à 19:36. En réponse au journal [Letlang] Et si on rédigeait la spec ?. Évalué à 2.
Le type est déterminé par le fait que tu ait fait passer la valeur par un constructeur du type
Non, le type n'est "que une fonction de validation". Cf un de mes articles précédent dans la série, et la section implémentation Rust de la spec.
Par exemple:
class even(n: int) { n % 2 = 0; } class mod4(n: int) { n % 4 = 0; }
Ici, even et mod4 sont définis tout deux à partir de int et n'ont pas connaissance de l'autre.
even
mod4
int
Et pourtant :
8 is even; # because 8 is int and 8 % 2 = 0 is true 8 is mod4; # becaues 8 is int and 8 % 4 = 0 is true
Et voici l'implémentation Rust de number et int qui sont appelés lors de l'appel de is ou passage en paramètre d'une fonction :
number
is
usecrate::{Value,PrimitiveValue,Type}; pubstruct NumberType; implTypeforNumberType{ fn has(&self,llval: &Value)-> bool { matchllval{ Value::Primitive(PrimitiveValue::Number(_))=>true, _=>false, } } } pubstruct IntegerType; implTypeforIntegerType{ fn has(&self,llval: &Value)-> bool { matchllval{ Value::Primitive(PrimitiveValue::Number(a))=>a.fract()==0.0, _=>false, } } }
Je pourrais très bien modifier ces implémentations pour dire que la string "1.5" est un nombre.
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: théorie des ensembles pas naives
Posté par David Delassus (site web personnel) . En réponse au journal [Letlang] Et si on rédigeait la spec ?. Évalué à 2.
Non, le type n'est "que une fonction de validation". Cf un de mes articles précédent dans la série, et la section implémentation Rust de la spec.
Par exemple:
Ici,
evenetmod4sont définis tout deux à partir deintet n'ont pas connaissance de l'autre.Et pourtant :
Et voici l'implémentation Rust de
numberetintqui sont appelés lors de l'appel deisou passage en paramètre d'une fonction :Je pourrais très bien modifier ces implémentations pour dire que la string "1.5" est un nombre.
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg