История изменений
Исправление hateyoufeel, (текущая версия) :
И пока вызываем ее с такими параметрами, все ок. Но как только вызывали с тем, с чем она не описана, д.б. ошибка во время компиляции.
Тогда смотри в сторону Data.Restricted и прочих синглтонов. Тебе нужен тип, в котором будут только значения [1..3], а не весь Integer.
Хотя для таких маленьких случаев обычно просто создают новый тип: data MyInt = One | Two | Three
и не парятся.
Можешь ещё на Liquid Haskell посмотреть. Это сторонняя штука, расширяющая систему типов хацкелла логикой предикатов (см. Refinment Types) и позволяющей писать вот такое: type RestrictedInt = {v : Int | v == -1 || v == 1 || v == 3}
.
Исправление hateyoufeel, :
И пока вызываем ее с такими параметрами, все ок. Но как только вызывали с тем, с чем она не описана, д.б. ошибка во время компиляции.
Тогда смотри в сторону Data.Restricted и прочих синглтонов. Тебе нужен тип, в котором будут только значения [1..3], а не весь Integer.
Хотя для таких маленьких случаев обычно просто создают новый тип: data MyInt = One | Two | Three
и не парятся.
Можешь ещё на Liquid Haskell посмотреть. Это сторонняя штука, расширяющая систему типов хацкелла логикой предикатов (см. Refinment Types) и позволяющей писать вот такое: {-@ type RestrictedInt = {v : Int | v == -1 || v == 1 || v == 3} @-}
.
Исправление hateyoufeel, :
И пока вызываем ее с такими параметрами, все ок. Но как только вызывали с тем, с чем она не описана, д.б. ошибка во время компиляции.
Тогда смотри в сторону Data.Restricted и прочих синглтонов. Тебе нужен тип, в котором будут только значения [1..3], а не весь Integer.
Хотя для таких маленьких случаев обычно просто создают новый тип: data MyInt = One | Two | Three
и не парятся.
Можешь ещё на Liquid Haskell посмотреть. Это сторонняя штука, расширяющая систему типов хацкелла логикой первого порядка и позволяющей писать вот такое: {-@ type RestrictedInt = {v : Int | v == -1 || v == 1 || v == 3} @-}
.
Исправление hateyoufeel, :
И пока вызываем ее с такими параметрами, все ок. Но как только вызывали с тем, с чем она не описана, д.б. ошибка во время компиляции.
Тогда смотри в сторону Data.Restricted и прочих синглтонов. Тебе нужен тип, в котором будут только значения [1..3], а не весь Integer.
Хотя для таких маленьких случаев обычно просто создают новый тип: data MyInt = One | Two | Three
и не парятся.
Исправление hateyoufeel, :
И пока вызываем ее с такими параметрами, все ок. Но как только вызывали с тем, с чем она не описана, д.б. ошибка во время компиляции.
Тогда смотри в сторону Data.Restricted и прочих синглтонов. Тебе нужен тип, в котором будут только значения [1..3], а не весь Integer.
Исправление hateyoufeel, :
И пока вызываем ее с такими параметрами, все ок. Но как только вызывали с тем, с чем она не описана, д.б. ошибка во время компиляции.
Тогда смотри в сторону Data.Restricted и подобного. Тебе нужен тип, в котором будут только значения [1..3], а не весь Integer.
Исходная версия hateyoufeel, :
И пока вызываем ее с такими параметрами, все ок. Но как только вызывали с тем, с чем она не описана, д.б. ошибка во время компиляции.
Тогда смотри в сторону Data.Restricted. Тебе нужен тип, в котором будут только значения [1..3], а не весь Integer.