يستوعب Integer أي عدد مهما كبر، حتى حدود ذاكرة جهازك، بينما يقابل Int مجموعة الأعداد الصحيحة الموجبة والسالبة التي يمكن التعبير عنها بـ 32 أو 64 بت (مضمون على الأقل من -2^29 إلى 2^29).
يقابل Float مجموعة الأعداد الحقيقية، محدودةً بدقة الحاسوب.
والعمليات المعرّفة على الأعداد تعمل عادةً على أحد النوعين، لا على كليهما.
من الدوال التي تحوّل بين Float وInteger، على سبيل المثال لا الحصر، toFloat التي تحوّل Int/Integer إلى Float، وceiling التي تحوّل Float إلى Int.
يتم التحويل من نوع صحيح (Int أو Integer) إلى أي نوع عددي آخر باستخدام الدالة fromIntegral.
ويُستنتج النوع الهدف تلقائيًا.
على سبيل المثال:
n :: Integer
n = 6
x :: Float
x = fromIntegral n --> x = 6.0
m :: Int
m = 7
y :: Double
y = fromIntegral m --> y = 7.0
أنت عضو في منظمة إطفاء مؤلفة من متطوعين دوليين. ونظرًا للطبيعة الدولية للفريق، ضاع وقت ثمين في المكالمات الأخيرة في الترجمة بين فهرنهايت وسلزيوس أثناء تقدير درجة الحرارة داخل المباني المحترقة. ولتوفير الوقت والأرواح، تقرر إنشاء برنامج يحوّل تلقائيًا بين فهرنهايت وسلزيوس لفريقك الدولي.
نفّذ الدالة tempToC لتحويل درجة حرارة من النوع Integer بوحدة فهرنهايت إلى ما يقابلها من النوع Float بوحدة سلزيوس، مقرّبة إلى أقرب جزء من مئة.
تُعرَّف درجة الحرارة بالدرجات السلزية على أنها: T(°C) = (T(°F) - 32) / 1.8.
> tempToC 32
0.00
نفّذ الدالة tempToF لتحويل درجة حرارة من النوع Float بوحدة سلزيوس إلى ما يقابلها بوحدة فهرنهايت.
ولأسباب تتعلق بالسلامة، قرّب النتيجة لأعلى إلى أقرب قيمة Integer أعلى منها.
تُعرَّف درجة الحرارة بالدرجات الفهرنهايتية على أنها: T(°F) = T(°C) × 1.8 + 32.
> tempToF 4
40
سجّل في Exercism لتتعلّم وتتقن Haskell عبر 107 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.