Здравствуйте, thesz, Вы писали:
T>Здравствуйте, VladD2, Вы писали:
VD>>Здравствуйте, thesz, Вы писали:
T>>>Видишь ли, эти самые безымянные записи с именованными полями нужны ровно для того, чтобы не перепутать startTime и endTime. Поддержать инвариант startTime <= endTime. Сделать их "типы" "зависящими" от их значений. Зависимыми, иными словами.
VD>>Инвариантом здесь и не пахнет. Не надо домысливать.
VD>>Все это нужно чтобы помочь человеку. В первую очередь — это возможность доступа к полям по имени. Скажем, если у нас есть некий запрос возвращающий список кортежей, то куда удобнее обращаться к полям кортежей по именам, а не через позиции.
T>Или по сравнению с образцом.
T>>>Если смотреть на это с такой точки зрения, то всё это обсуждение яйца выеденного не стоит.
VD>>Не очень понятно с чего бы это, но на то они и разные точки зрения.
T>Всё, что ты делаешь (и я делаю, и кто-либо ещё делает в районе проектирования любых ЯП), направлено на уменьшение количества ошибок, допускаемых программистами.
T>Это единственная разумная точка зрения. "Мы все уменьшаем количество ошибок наших пользователей".
T>Далее идёт оценка размена — какие ошибки мы уменьшаем, какие увеличиваем. Где мы потратим больше времени, где меньше — второй вариант оценки.
T>Так вот, с этой точки зрения обсуждение обращения по именами полей безымянных структур выглядит разменом даже не самих пешек, а разменом пыли с тех частей доски, на которых эти пешки стояли.
Сергей, разъясните, пожалуйста.
В хаскеле советуют вместо туплов создавать отдельные типы. Ну и вот, создам я, например,
data FIO = FIO String String String
И потом, принимая тип FIO,
fio_pupkin = FIO "Пупкин" "Василий" "Апполинариевич"
print_first_name :: FIO -> IO ()
вместо (казалось бы, логичного) обращения к конкретной части типа,
-- вымысел
data FIO = FIO last:String first:String middle:String
print_first_name fio = print fio.first
будет паттерн-матчинг, который учитывает все, даже не используемые части.
print_first_name (FIO _, fname, _) = print fname
По-вашему, это пыль где пешки стояли?
T>А вот наличие имён для индикации инвариантов уже более интересно. Про наличие инвариантов и говорить отдельно не стоит, и так понятно, что это круто.
T>>>В Хаскель не попадают идеи из C#, в отличии от противоположного направления.
VD>>Возможно тебя это рассторит, но подовляющему большинству программистов плевать на хаскель и на то что в него попадает.
VD>>И плевать, на то что ты не можешь пройти мимо любой темы, посвященной дизайну ЯП, где забыли упомянуть Наскель.
T>Я так думаю, что это их проблемы, не мои.
T>Это они не знакомы с Хаскелем и потому, начиная говорить о функциональных языках программирования, сворачивают на то, что им известно.
T>>>Поэтому выгодней учить Хаскель. Что я и делаю.
VD>>Ну, учи. Что к другим то приставать?
T>Я альтруист.
VD>>Мне Hasskel без надобнсоти. Что на нем можно сделать? Чистые вычисления меня не интересуют.
T>А зря.
VD>>От иероглифической записи меня не прем (иначе я наверно перся бы от K или J). Мне нужен инструмент позволяющий решать проблемы реального мира.
T>Это любой ЯП общего назначения.
T>Интересно, ты не упомянул "наиболее эффективным образом".
T>>>Но ты спрашивай, я объясню.
VD>>Мне тебя не о чем спрашивать. Твоя позиция почти всегда деструктривно. Потому с тобой просто не интересно разговаривать. Вместо высказывания интересный мыслей ты постоянно выёживашся и потнушся.
VD>>Научись воспринимать окружающих как равных. Объяснять свою точку без понтов, воспринимать чужую точку зрения. Тогда с тобой будет интересно вести беседы. А так одно раздражения от общения с тобой получаешь.
T>Ух ты!
T>Это же комплимент.
T>Поскольку я слышу это от человека, которому последние два параграфа говорят гораздо чаще, чем мне.