История изменений
Исправление 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