Re[8]: Inline records
От: Temoto  
Дата: 06.01.10 21:10
Оценка:
Здравствуйте, 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>Поскольку я слышу это от человека, которому последние два параграфа говорят гораздо чаще, чем мне.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.