История изменений
Исправление loz, (текущая версия) :
Посмотри на его код. Если передать в foo прямоугольник с равными сторонами, (и каким-то, пока непонятным мне образом система поймет что сработать должен последний кейз), то метод foo сработает как для квадрата.
И что у нас теперь появился тип 3symbols? Какое это отношение имеет к типам?
А что такое тип, как не набор операций на нем? :) А тут над типом square есть операция foo, и можно написать еще кучу других. Так что это и будет именно тип квадрат, а прямоугольник и square? - лишь детали реализации.
Исходная версия loz, :
Посмотри на его код. Если передать в foo прямоугольник с равными сторонами, (и каким-то, пока непонятным мне образом система поймет что сработать должен последний кейз), то метод foo сработает как для квадрата.
И что у нас теперь появился тип 3symbols? Какое это отношение имеет к типам?
А что такое тип, как не набор операций на нем? :) А тут над типом square есть операция foo, и можно написать еще кучу других. Так что это и будем именно тип квадрат, а прямоугольник и square? - лишь детали реализации.