real
ليس نوع المساواة في ML ، وبالتالي لا يتم إنشاء أنواع متعددة الأشكال من real
S - على وجه الخصوص ، real list
S ليست أنواع المساواة ، وبالتالي لا يمكنك استخدام المشغل =
لمقارنة اثنين real list
S ، حتى لو كانت تلك القوائم فارغة. بدلاً من ذلك ، تحتاج إلى تطابق نمط. فمثلا،
fun reverse [] = []
| reverse (x::xs) = (reverse xs) @ [x]
أو
fun reverse [] = []
| reverse (x::xs) = case xs of
[] => [x]
| _ => (reverse xs) @ [x]
سوف تعمل حتى لأنواع غير جودة.
(بالتناوب ، استخدم الوظيفة المضمنة List.rev
.)