metaclass: (Default)
[personal profile] metaclass
А вот что у нас есть из функциональщины со статической типизацией, но чтобы типы записей не нужно было объявлять заранее вообще, но при этом они бы свободно участвовали в выводе типов?

Очень уж удалбывает при работе с БД и оперденями необходимость объявлять типы. Использовать кортежи неудобно - без имен не поймешь что где в кортеже из 20-30 полей.
Приходится использовать кложурь и мапы с keyword-ключами и следить за собственной головой при рефакторингах, чтобы не поломать все нахрен, т.к. проверок статических там вообще никаких нет.

В LINQ в C# мы можем сделать анонимный класс с именованными полями, но вроде не можем вернуть его из функции и использовать где-попало за пределами текущей области видимости.
В F# ад и содомия - записи нужно объявлять заранее, что дичайше огорчает при рефакторинге - приходится бегать между объявлением и тыщами мест создания записей.
В хаскеле записи вообще, похоже, срачеразжигающая тема и ни одно из расширений вроде не считается общепринятым.

PS: Язык должен быть с иммутабельностью, хотя бы как в clojure и со статической типизацией. Зачем вы жабаскрипт вспоминаете, если я явно написал, что clojure напрягает отсутствием статического анализа кода?

Date: 2012-08-07 04:57 pm (UTC)
From: [identity profile] ko444evnik.livejournal.com
в шарпе еще можно с туплами поиграться. она в отличие от анонимного класса не запечатана и от нее можно наследоваться. и получить к тому же кортежу альтернативный именованный доступ.

Date: 2012-08-07 07:18 pm (UTC)
From: [identity profile] veremeenko-alex.livejournal.com
Так статической типизации не получится.

metaclass хочет динамически создать тип например так:

... select new { Upper = w.ToUpper(), Lower = w.ToLower() };

И потом везде по коду пользоваться как статическим - item.Upper;


Весь дотнет стек ему похоже не поможет.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 15th, 2025 02:07 am
Powered by Dreamwidth Studios