LINUX.ORG.RU

Vala 0.9.4. Теперь с монадами.

 


0

0

Вышла Vala 0.9.4, изменений по минимуму, в основном работа ведется над профилем Dova (стандартная библиотека, написанная на pure Vala). Похоже, 1.0.0 не за горами.

И да, теперь в Vala можно использовать монадические конструкции. На закономерный вопрос: «А на кой черт монады в императивном языке?» - автор ответил, что в основном это служило проверкой того, насколько гибким языком является Vala. Впрочем, один практический пример («безопасное» деление), таки да, был приведен.

★★

Последнее исправление: CYB3R (всего исправлений: 1)

Кто знает, как у Vala с вендой? Можно ли использовать для кроссплатформенных гуёв? Чтоб быстрее питона, но проще всяких с++, и без небогоугодных дотнетов и тяжелых джав.

anonymous
()

Теперь и программисты на Vala, убив целый день на какую-нибудь ерунду, смогут, подобно функциональщикам, гордо заявить: «Пришлось потратить день. Но монада есть!» :)

оригинале было «Но морфизм есть»)

Kuka ★★
() автор топика
Ответ на: комментарий от anonymous

> Кто знает, как у Vala с вендой?

У Vala с вендой должно быть ровно таково, каково с вендой у GCC и GTK+. То есть вроде бы относительно жизнеспособно. Из Vala-практиков тут водится BeerSeller (ЕМНИП), поспрашивайте у него.

Kuka ★★
() автор топика
Ответ на: комментарий от anonymous

Оно компилируется в C; в качестве библиотек использует GTK+; т.е., всё должно быть в порядке.

runtime ★★★★
()

монады никак не коррелируют с императивностью/декларативностью. вообще никак

jtootf ★★★★★
()

Вопросы хацкелистам: почему незаменимы монады? замедляет ли сильно обертка в монаду вычисления?

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Монада - это просто способ композиции функций, влияние на производительность зависит от того как компилятор умеет оптимизировать вызовы функций.

Begemoth ★★★★★
()
Ответ на: комментарий от vertexua

Вопросы хацкелистам: почему незаменимы монады?

это чуть более, чем полностью бессмысленный вопрос. незаменимы в каком контексте?

замедляет ли сильно обертка в монаду вычисления?

по сравнению с чем? стек монадических трансформеров может лишить тебя ряда оптимизаций, но в общем случае вопрос опять же бессмысленный

jtootf ★★★★★
()

Вышла Vala 0.9.4

вопрос о смысле cуществования Vala остался нераскрыт :(

70% «фичей» которые анонсированы, даёт С++ с библиотеками. Ещё процентов 20 охватывается Qt-шным moc`ом. Остаётся 10% лямбд с монадами, чья нужность для «programming language that allows modern programming techniques to be used to write applications that run on the GNOME runtime libraries, particularly GLib and GObject» мягко говоря сомнительна.

попытка скрыть GObject в конструкциях языка и сделать программирование для Gnome более внятным, явна неудалась :(

class Demo.HelloWorld : GLib.Object {
    public static int main(string[] args) {
        stdout.printf("Hello, World\n");
        return 0;
    }
}

imho: дикая помесь C++,java и неудачная попытка обойти Qt фактически его-же идеями и средствами

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

>С++ с библиотеками

Переусложненный и самый корявый в мире язык

Qt-шным moc

ни с чем не совместимый (в том числе и с с++) велосипед с квадратными колесами

чья нужность

Кто такой МКузнетсов и кто уполномочил его определять нужность лямбд с монадами?

anonymous
()
Ответ на: комментарий от MKuznetsov

>Остаётся 10% лямбд с монадами, чья нужность...

Да пользовался ты монадами, не переживай. Монады - это тройка: эндофунктор F:T -> T, преобразованиея eta: 1 -> T и mu: T^2 -> T, где F - функция или метод, eta - условно говоря, преобразователь «простого» типа в «составной», mu - условно говря, обратно eta.

А «лямбдами» ты пользуешься с первого класса школы.

Macil ★★★★★
()
Ответ на: комментарий от oh

Странно, иногда говорят что 3ка, я читал только про двойки: bind и unit. А 3ее это lift?

третье - это непосредственно функтор: [], State, Error, Maybe, etc

jtootf ★★★★★
()
Ответ на: комментарий от oh

категориально, монада (имеющая тип m a) - это функтор m, и два естественных преобразования: return (имеющее тип a -> m a) и join (имеющее тип m (m a) -> m a). в Haskell монада определяется эквивалентным образом: вместо join задаётся bind (одно можно выразить через другое)

с практической точки зрения, монада - это аппликативный функтор с одной дополнительной операцией (join или bind)

jtootf ★★★★★
()
Ответ на: комментарий от oh

см. пред. сообщение ;)

я эту нить обсуждения не понял вообще, так что ничего сказать не могу

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

Хмм, про join вообще не слышал.
bind - это m a f -> m (f a), так же,

oh
()
Ответ на: комментарий от oh

функтор в хаскиле - это не просто функтор

функтор в Haskell - это эндофунктор в категории Hask, за её пределы тебя никто не выпустит

jtootf ★★★★★
()

ну вот. в итоге Vala будет еще одним перегруженным фичами, раздутым языком.

mono ★★★★★
()

>в основном работа ведется над профилем Dova

Они хотят полностью выкинуть GLib и gobject, и заменить их велосипедом?

Nakgidveef
()
Ответ на: комментарий от oh

Да нет, bind в хаскеле выражается в терминах fmap (эндофунктор) и join (мю-преоразование). Поэтому и пишут некоторые товарищи, что монада - «двойка» return, bind.

Вообще в хаскеле путаница. Во-первых, есть только одна категория. Во-вторых, liftM и fmap - то же самое. В третьих, join - не совсем мю-преобразование, парвильное мю-преобразование должно иметь тип (t m a -> m a). В четвертых, все это наложено на положения абстрактной алгебры, например очень много монад в то же время являются моноидами. В пятых, монады не являются точной реализацией теории категорий, более понятными с этой точки зрения являются стрелки (Control.Arrow).

Короче, читай Маклейна, читай что-нибудь по абстрактной алгебре ;). Жалко, блин, у меня не остается времени на такие издевательства над мозгом.

Macil ★★★★★
()
Ответ на: комментарий от Macil

join - не совсем мю-преобразование, парвильное мю-преобразование должно иметь тип (t m a -> m a)

эээ, что?

очень много монад в то же время являются моноидами

любая монада является 2-моноидом; монада, наделённая структурой 1-моноида - это MonadPlus, инстансов (стандартных) у которой аж целых пять

монады не являются точной реализацией теории категорий

это вообще что должно значить?

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.