LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Из любопытства заглянул в исходники той программы.

На Си вообще можно нечитаемое написать.

Вот код на Хаскелле:

data Stuffing = Meat | Cabbage
data Food = Cake | Bread | Pasty Stuffing
data GasStatus = GasAvailable | GasUnavailable
data Oven = ElectricOven | GasOven | MicrowaveOven
data Brick = Brick

ovenCouldBeUsed GasOven GasUnavailable = False
ovenCouldBeUsed _ _ = True

create food oven gas
  | ovenCouldBeUsed oven gas = Just food
  | otherwise = Nothing

breadRecipe = create Bread
cakeRecipe = create Cake
pastyRecipe stuffing = create $ Pasty stuffing

makeBrick oven gas
  | ovenCouldBeUsed oven gas = Just Brick
  | otherwise = Nothing

На Java сделают что-то вроде того, что на картинке слева: https://habrastorage.org/r/w1560/storage2/901/06a/17e/90106a17eb84812f5cb5c27bd20883d6.png

Исходная версия monk, :

Из любопытства заглянул в исходники той программы.

На Си вообще можно нечитаемое написать.

Вот код на Хаскелле:

data Stuffing = Meat | Cabbage
data Food = Cake | Bread | Pasty Stuffing
data GasStatus = GasAvailable | GasUnavailable
data Oven = ElectricOven | GasOven | MicrowaveOven
data Brick = Brick

ovenCouldBeUsed GasOven GasUnavailable = False
ovenCouldBeUsed _ _ = True

create food oven gas
  | ovenCouldBeUsed oven gas = Just food
  | otherwise = Nothing

breadRecipe = create Bread
cakeRecipe = create Cake
pastyRecipe stuffing = create $ Pasty stuffing

makeBrick oven gas
  | ovenCouldBeUsed oven gas = Just Brick
  | otherwise = Nothing

На Java сделают что-то вроде https://habrastorage.org/r/w1560/storage2/901/06a/17e/90106a17eb84812f5cb5c27bd20883d6.png