[OCaml] Batteries Included 1.0.0
От: FR  
Дата: 16.01.10 17:21
Оценка: 18 (2)
Вышел первый релиз батареек — замены стандартной библиотеки OCaml: http://forge.ocamlcore.org/forum/forum.php?forum_id=511
Re: [OCaml] Batteries Included 1.0.0
От: Курилка Россия http://kirya.narod.ru/
Дата: 17.01.10 09:30
Оценка:
Здравствуйте, FR, Вы писали:

FR>Вышел первый релиз батареек — замены стандартной библиотеки OCaml: http://forge.ocamlcore.org/forum/forum.php?forum_id=511


Это нормально, что там https вылезает с некорректным сертификатом?
Re[2]: [OCaml] Batteries Included 1.0.0
От: FR  
Дата: 17.01.10 09:35
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Это нормально, что там https вылезает с некорректным сертификатом?


Ну это конечно не нормально, но насколько помню всегда так было.
Re: [OCaml] Batteries Included 1.0.0
От: Аноним  
Дата: 17.01.10 16:47
Оценка:
На что вообще надеются люди, выпуская базовые библиотеки языка по лицензиями типа GPL и LGPL?
Какое развитие языка после этого вообще возможно? Если они запрещают этим использование языка в коммерческих целях,
то какое у него может быть будущее?
Зачем вообще это делают, чего они добиваются, какие цели преследуют, кроме уничтожения языка?

FR>Вышел первый релиз батареек — замены стандартной библиотеки OCaml: http://forge.ocamlcore.org/forum/forum.php?forum_id=511
Re[2]: [OCaml] Batteries Included 1.0.0
От: FR  
Дата: 17.01.10 16:54
Оценка:
Здравствуйте, Аноним, Вы писали:


А>На что вообще надеются люди, выпуская базовые библиотеки языка по лицензиями типа GPL и LGPL?

А>Какое развитие языка после этого вообще возможно? Если они запрещают этим использование языка в коммерческих целях,
А>то какое у него может быть будущее?
А>Зачем вообще это делают, чего они добиваются, какие цели преследуют, кроме уничтожения языка?

Во первых ни LGPL ни даже GPL ни запрещают коммерческое использование.
Во вторых батарейки идут со "стандартной" OCaml лицензией — LGPL с исключением разрешающим
статическую линковку, так что не только запрета, но и даже неудобств для коммерческой разработки
нет.
Re: [OCaml] Batteries Included 1.0.0
От: Mr.Cat  
Дата: 17.01.10 18:08
Оценка:
Здравствуйте, FR, Вы писали:
FR>Вышел первый релиз батареек — замены стандартной библиотеки OCaml: http://forge.ocamlcore.org/forum/forum.php?forum_id=511
А можно вкратце рассказать про батарейки — для тех, кто не знаком с окамлом и просто любопытствует? Ну например, чем батарейки лучше того, что было, и стандартных библиотек других языков.
Re[2]: [OCaml] Batteries Included 1.0.0
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 18.01.10 03:33
Оценка: 16 (3) +1
Здравствуйте, Mr.Cat, Вы писали:

MC>А можно вкратце рассказать про батарейки — для тех, кто не знаком с окамлом и просто любопытствует? Ну например, чем батарейки лучше того, что было, и стандартных библиотек других языков.


Батарейки призваны решить несколько старых проблем стандартной библиотеки Окамла, которая:
1. Неконсистентная. Одни и те же вещи в соседних модулях делаются по-разному: разные имена функция для одних операций, разный порядок аргументов. Без IDE приходится все время подглядывать в документацию.
2. Подлая. Ряд важных стандартных функций над списками не tail-recursive, соответственно вызывает проблемы на длинных списках.
3. Слишком маленькая. Содержит лишь базовые структуры и возможности. Чуть что нужно посложнее, уже надо или искать библиотеки, или делать самому.

А хотелось, чтобы было как в питоне или .net'e: чтобы все самое нужное уже было из коробки и удобно для использования. Название как раз от питоновского лозунга пошло — batteries included.

Первые две проблемы отчасти решал ExtLib (которым я и пользуюсь все время), батарейки включили его, плюс еще дополнительные библиотеки.
Re[3]: [OCaml] Batteries Included 1.0.0
От: FR  
Дата: 16.02.10 14:35
Оценка: 21 (3)
Здравствуйте, D. Mon, Вы писали:

DM>Батарейки призваны решить несколько старых проблем стандартной библиотеки Окамла, которая:


Только сейчас смог найти время более-менее подробно посмотреть батарейки, хочу добавить что
они не только решают проблемы стандартной библиотеки, но во многом сдвигают акценты
программирования. Самое важное конечно сплошная enum'изация все что шевелится имеет
интерфейс в виде Enum'а, при этом он по сути практически императивный паттерн итератор,
но окруженный всеми базовыми ФВП типа fold map и т. п. Это дает гораздо большую
обобщенность чем стандартная библиотека. Кроме того enum'ы ненавязчиво протаскивают
везде ленивость, конечно OCaml Хаскелем от этого не становится, но ленивости теперь
гораздо больше Кстати есть достаточно робкие попытки монадизации, есть модуль
BatMonad и у некоторых модулей представления в виде монад.

Еще отличие от стандартной библиотеки улучшенная структура, например в стандартной есть
совершенно независимые модули List и ListLabels в батарейках же внутри модуля BatList
есть вложенный модуль Labels, что и логичней и удобней. Кроме Labels есть вложенные
модули Exceptionless в которых содержатся варианты функций не выбрасывающие исключения.

Еще хорошая вещь list comprehension вернее Comprehension expressions так как по
умолчанию он порождает не список а Enum:

[? (a, a * a) | a <- 1--10; a mod 3 = 0 ?]


Но можно генерировать и списки с массивами:

[? List: (a, a * a) | a <- 1--10; a mod 3 = 0 ?]
[? Array: (a, a * a) | a <- 1--10; a mod 3 = 0 ?]


и даже строки:

[? String : c | c <- (open Char in 'a' -- 'z') ?];;


Еще появилась более менее нормальная поддержка юникода в виде UTF8 есть модули
BatUTF8 BatUChar и BatRope плюс синтаксическое расширение для юникодных строк

u"это строка в UTF8"


Ну и общепринятые (вроде уже и стандартные в F#) закорючки уменьшающие число
скобок типа <| и |> и упрощающие point free стиль -| и |- теперь доступны из
коробки.

Вообще батарейки это практически то же самое что boost в C++.

Ну и самое главное, батарейки прилично повышают коэффициент пузомерности OCaml'а

[?  1 | _ <- BatFile.lines_of "test.txt" ?] |> count |> printf "Lines - %d\n";;
Re[4]: [OCaml] Batteries Included 1.0.0
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 16.02.10 16:50
Оценка:
Здравствуйте, FR, Вы писали:

FR> Самое важное конечно сплошная enum'изация все что шевелится имеет

FR>интерфейс в виде Enum'а, при этом он по сути практически императивный паттерн итератор,
FR>но окруженный всеми базовыми ФВП типа fold map и т. п. Это дает гораздо большую
FR>обобщенность чем стандартная библиотека. Кроме того enum'ы ненавязчиво протаскивают
FR>везде ленивость, конечно OCaml Хаскелем от этого не становится, но ленивости теперь
FR>гораздо больше

Это еще в ExtLib'e было, за что я его и люблю, сам очень многое на Enum'ax делаю.
Re[5]: [OCaml] Batteries Included 1.0.0
От: FR  
Дата: 16.02.10 17:31
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Это еще в ExtLib'e было, за что я его и люблю, сам очень многое на Enum'ax делаю.


Угу ExtLib практически целиком перекочевал.
Re: [OCaml] Batteries Included 1.0.0
От: Mazay Россия  
Дата: 16.02.10 17:57
Оценка:
Здравствуйте, FR, Вы писали:

FR>Вышел первый релиз батареек — замены стандартной библиотеки OCaml: http://forge.ocamlcore.org/forum/forum.php?forum_id=511


А что там с поддержкой shared-memory многозадачности?
Главное гармония ...
Re[2]: [OCaml] Batteries Included 1.0.0
От: FR  
Дата: 16.02.10 18:20
Оценка: 6 (1)
Здравствуйте, Mazay, Вы писали:

M>А что там с поддержкой shared-memory многозадачности?


С многозадачностью пока глухо, тут библиотеками (кроме поддерживающих мультипроцессность)
не поможешь, нужно переписывать рантайм языка. А так примитивы синхронизации в батарейках
есть например BatConcurrent.

Для мультипроцессной многозадачности есть несколько библиотек вне батареек:

http://blog.camlcity.org/blog/parallelmm.html
https://forge.ocamlcore.org/projects/ocamlmpi/
Re[5]: [OCaml] Batteries Included 1.0.0
От: FR  
Дата: 21.02.10 05:27
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Это еще в ExtLib'e было, за что я его и люблю, сам очень многое на Enum'ax делаю.


Читаю сейчас исходники BatEnum.ml я оказывается сильно ошибался считая OCaml функциональным языком
Re[6]: [OCaml] Batteries Included 1.0.0
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 21.02.10 07:47
Оценка: :)
Здравствуйте, FR, Вы писали:

FR>Читаю сейчас исходники BatEnum.ml я оказывается сильно ошибался считая OCaml функциональным языком


Ты про императивность реализации? Она там для скорости. Многие те же вещи можно было сделать чисто функционально, но скорость была бы не та. А так снаружи все красиво, а как оно внутре списки строит и пр. — лучше не знать.
Re[7]: [OCaml] Batteries Included 1.0.0
От: dr.Chaos Россия Украшения HandMade
Дата: 25.02.10 20:51
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Ты про императивность реализации? Она там для скорости. Многие те же вещи можно было сделать чисто функционально, но скорость была бы не та. А так снаружи все красиво, а как оно внутре списки строит и пр. — лучше не знать.


А с использованием та же фигня вылезет? Т.е. сначала делаем красиво, а потом переписываем для скорости?
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[8]: [OCaml] Batteries Included 1.0.0
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 26.02.10 06:30
Оценка:
Нет. Поскольку внутри оно быстрое, а снаружи красивое, то при использовании все сразу красиво и быстро.
Re[9]: [OCaml] Batteries Included 1.0.0
От: dr.Chaos Россия Украшения HandMade
Дата: 26.02.10 09:33
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Нет. Поскольку внутри оно быстрое, а снаружи красивое, то при использовании все сразу красиво и быстро.


Ну хорошо если с батарейками так. Это больше вопрос к тому как в OCaml-е оптимизацию делают: например, в Хаскеле есть rewrite rules, в OCaml-е что-то подобное есть? Или придётся переписывать существующий код?
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[10]: [OCaml] Batteries Included 1.0.0
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 26.02.10 09:52
Оценка: 2 (1)
Здравствуйте, dr.Chaos, Вы писали:

DC>Ну хорошо если с батарейками так. Это больше вопрос к тому как в OCaml-е оптимизацию делают: например, в Хаскеле есть rewrite rules, в OCaml-е что-то подобное есть? Или придётся переписывать существующий код?


Нет, rewrite rules нету, придется переписывать.
Re: [OCaml] Batteries Included 1.0.0
От: Alex EXO http://aleksandr-zubarev.moikrug.ru/
Дата: 08.03.10 05:25
Оценка:
Здравствуйте, FR, Вы писали:

FR>Вышел первый релиз батареек — замены стандартной библиотеки OCaml: http://forge.ocamlcore.org/forum/forum.php?forum_id=511

А что известно про совместимость батареек с Ocsigen?
Re[2]: [OCaml] Batteries Included 1.0.0
От: FR  
Дата: 10.03.10 07:00
Оценка:
Здравствуйте, Alex EXO, Вы писали:

AE>А что известно про совместимость батареек с Ocsigen?


Я не знаю, вместе не пробовал пока использовать.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.