Re[9]: Опциональные типы
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.02.17 10:32
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Кстате, смотрю в Java 8 добавили Optional и в нём та-да-ам:

V>
V>opt.ifPresent( x -> System.out.println("found " + x));
V>


Как же так? По твоей же теории в не функциональном языке без вариантов такое невозможно!

V>Или можно взглянуть сюда:

V>
V>public T ValueOr(T alternative) => hasValue ? value : alternative;
V>


Ой! Твоя теория распадается? Или ты все же решил признать очевидное?

V>Т.е., я ошибся только во второй части этого утверждения:...


Не. Ты с самого начала был не прав и (похоже) уже это осознал. Но пока не готов признать свою ошибку и пытаешься выкрутиться.

Советую тебе научиться признавать свою неправоту. В этом нет ничего зазорного. Наоборот, вот такие вот попытки выкрутиться выглядят намного хуже.

Все твои утверждения были ложными. А именно:
1. Option спокойно можно реализовать в виде Value-типа. Это собственно доказано реализацией из Немерла.
2. Варианты (они же: размеченные объединения, tagged unions, discriminated unions, disjoint union, sum type) можно реализовать в виде Value-типов. Это доказано просто их исходным названием (tagged unions), описанием и примерами реализации на С++.
3. Варианты спокойно могут быть в не функциональном языке. И вообще понятие функционального языка очень размытое.
4. Паттерн матчинг (ПМ) возможен не только вариантам, но и по любым типам. Причем типы даже не обязаны быть полиморфными, так как ПМ может проверять структуру типа (значения его членов).

Все твои придирки к конкретным реализациям не более чем попытка увести разговор в строну. Убери те члены которые тебе не нравятся и ровным счетом ничего не изменится.

Ну, а синтаксически все это можно завернуть в операторы или другие фичи языка.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.