Haskell v. Pascal (in Greek)

As of March 2020, School of Haskell has been switched to read-only mode.

Εδώ δοκιμάζουμε αν η Haskell «δουλεύει» με ελληνικούς χαρακτήρες.

Το πρόγραμμα επιλύει εξισώσεις α΄ βαθμού τής μορφής αx + β = 0. Ελέγχει όλες τις δυνατές περιπτώσεις (αδύνατη, αόριστη). Πατήστε το βέλος και δοκιμάστε το!

-- Λύση πρωτοβάθμιας εξίσωσης
-- 28 Ιουνίου 2013

root :: Double -> Double -> String
root 0 0 = "Αόριστη - απειρες λύσεις"
root 0 _ = "Αδύνατη - καμμία λύση"
root a b = "x = " ++ show (-b / a)

main :: IO ()
main = do
  putStrLn "Λύση πρωτοβάθμιας εξίσωσης αx + β = 0"
  putStrLn "Δώστε την κλίση (α) και την y-τεταγμένη (β):"
  sl <- getLine
  yi <- getLine
  putStrLn $ "Κλίση (α) = " ++ sl
  putStrLn $ "y-τεταγμένη (β) = " ++ yi
  putStrLn $ (root (read sl) (read yi))

Το ίδιο πρόγραμμα σε Pascal:
(Δυστυχώς, δεν υπάρχει δυνατότητα εκτέλεσης τού προγράμματος σε Pascal. Μόνο σε Haskell!)

{ Λύση πρωτοβάθμιας εξίσωσης }
{ 28 Ιουνίου 2013 }

program LinEq (input, output);

var
  sl, yi: Real;

procedure Root(a, b: Real);
begin
  if a = 0 then
    if b = 0 then
      WriteLn('Αόριστη - άπειρες λύσεις')
    else
      WriteLn('Αδύνατη - καμμία λύση')
  else
    WriteLn('x = ', -b/a)
end;

begin
  WriteLn('Λύση πρωτοβάθμιας εξίσωσης αx + β = 0');
  WriteLn('Δώστε την κλίση (α) και την τεταγμένη y (β):');
  ReadLn(sl);
  ReadLn(yi);
  WriteLn('Κλίση (α) = ', sl);
  WriteLn('y-τεταγμένη (β) = ', yi);
  Root(sl, yi)
end.

Βλέπουμε πόσο ομορφότερος και συντομότερος είναι ο κώδικας Haskell. Επίσης, βλέπουμε πόσο πιο κοντά στα Μαθηματικά είναι. Ας σημειωθεί πως η Pascal υπήρξε η γλώσσα με την οποία μεγάλωσαν εκατομμύρια προγραμματιστών σ' όλον τον κόσμο.

comments powered by Disqus