LINUX.ORG.RU

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

Исправление 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.