Кілбасы, пальцам пханыя
Aug. 24th, 2010 10:09 am200 килобайт кода (5000 строк) на F# из модели, содержащей 81(типы)+44(таблицы)+276(поля) записей в БД генерит 1.1 мегабайта sql+xml+C# (22 тысяч строк).
Что меня в моем стиле писанины на F# немного напрягает, так это постоянно получающиеся в исходниках строки по 100-150 символов, т.к. на широкоэкранном монике они не мешают, а получающиеся методы сильно читабельнее, т.к. в основном весь смысл строки где-нибудь в начале ("какой ADT создаем") а дальше идут только параметры.
И вот с этими параметрами такая длина и вылазит - осмысленный набор конструкторов данных для половины ADT содержит что-то вроде None, из-за чего эти None путаются между собой и стандартным типом Option (он же - Maybe, т.е. Option.None == Nothing) и для них приходится явно указывать префиксы имени типа (ReadOnlyFieldModifier.None, CSharpVisibility.None, CSharpModifier.None). Сокращать имена типов не хочу, они осмысленные, Можно было бы добавить коротенькие префиксы прямо в имена конструкторов данных, тогда можно было бы обойтись без явного указания имени типа.
Еще было бы неплохо поиметь "параметры по умолчанию", типа вместо параметра пишешь _, а компилятор подставляет то, что мы указали дефолтным где-нибудь в описании функции или конструктора. При небольшом количестве параметров это лечится функциями - умными конструкторами, а при большом задолбаться перебирать комбинации.
Что меня в моем стиле писанины на F# немного напрягает, так это постоянно получающиеся в исходниках строки по 100-150 символов, т.к. на широкоэкранном монике они не мешают, а получающиеся методы сильно читабельнее, т.к. в основном весь смысл строки где-нибудь в начале ("какой ADT создаем") а дальше идут только параметры.
И вот с этими параметрами такая длина и вылазит - осмысленный набор конструкторов данных для половины ADT содержит что-то вроде None, из-за чего эти None путаются между собой и стандартным типом Option (он же - Maybe, т.е. Option.None == Nothing) и для них приходится явно указывать префиксы имени типа (ReadOnlyFieldModifier.None, CSharpVisibility.None, CSharpModifier.None). Сокращать имена типов не хочу, они осмысленные, Можно было бы добавить коротенькие префиксы прямо в имена конструкторов данных, тогда можно было бы обойтись без явного указания имени типа.
Еще было бы неплохо поиметь "параметры по умолчанию", типа вместо параметра пишешь _, а компилятор подставляет то, что мы указали дефолтным где-нибудь в описании функции или конструктора. При небольшом количестве параметров это лечится функциями - умными конструкторами, а при большом задолбаться перебирать комбинации.