Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2005-11-01 14:04:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Место для вопроса про O'Caml
Subj


(Добавить комментарий)

спасибо !
[info]polytheme
2005-11-01 14:28 (ссылка)
вопросы у меня пока простые -
1. есть ли способ сконкатенировать две строки короче, чем
String.concat "" [str1;str2];
2. есть ли в OCaml аналог using C++/import java, чтобы не писать String.concat, а просто concat.

(Ответить) (Ветвь дискуссии)

Re: спасибо !
[info]kouzdra
2005-11-01 14:35 (ссылка)
1) Операция (^): str1 ^ str2
2) open String, но это обычно не очень удобно.
библиотеки сдизайнены в основном в рассчете
на явные квалификаторы - много совпадающих имен.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: спасибо !
[info]polytheme
2005-11-01 14:41 (ссылка)
спасибо еще раз. я что-то не нашел этого в Documentation & user manual, и только сейчас заметил, что это есть мимоходом в Developing Applicatons with OCaml. а нет текста, в котором подробно расписана не только лексика, но и семантика, помимо второй книжки ?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: спасибо !
[info]kouzdra
2005-11-01 14:48 (ссылка)
В документации есть (только не в Introduction), но в странных местах. Например операции описаны здесь. Про open сказано
вот тут (если не знать, то вряд ли найдешь).

При этом лексика - в lexical conventions.

На самом деле есть смысл прочитать Introduction, потом вторую книжку, а основной докой пользоваться как справочником.

(Ответить) (Уровень выше)

Re: спасибо !
[info]ifp5
2005-11-01 15:34 (ссылка)
Локальный open, на мой взгляд, удобен.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: спасибо !
[info]polytheme
2005-11-01 20:29 (ссылка)
спасибо, действительно красиво, это подобие локального using namespace в C++. и место интересное.

(Ответить) (Уровень выше)

Не совсем по OCaml, но спрошу :)
[info]ifp5
2005-11-01 14:57 (ссылка)
Интересно как в языках типа *ML, Haskell красиво и эффективно работать с бинарными данными? Например, работать с заголовками IP/TCP/UDP и пр. Некоторые товарищи используют файло-ориентированный подход, типа из буфера делается Enum.t (из extlib), к которому применяются операции из IO.

Я делал примерно также, как-то писав на камле одну тулзу для работы с IP через divert-сокеты, но хочется чего-то более красивого. В принципе, более красивым кажется родить какой-нибудь специальный (подъ)язык, но рожать его пока было лениво, т.к. есть более нужные задачи.

(Ответить)


[info]polytheme
2005-11-01 20:31 (ссылка)
еще забыл вопрос - есть ли в OCaml функции с произвольным числом параметров ? или из за того, что легко подать на вход список, это не нужно ?

(Ответить) (Ветвь дискуссии)


[info]polter
2005-11-01 21:28 (ссылка)
вообще-то формально говоря в окамле (как и в хаскеле) функция может иметь не более одного параметра
для нескольких параметров - карринг, туплы или да, те же списки

(Ответить) (Уровень выше)


[info]kouzdra
2005-11-01 21:53 (ссылка)
Нет. Вообще - важная довольно вещь, в которую не все сразу въезжают -
O'Caml - язык статически типизированный. Причем в отличие от ОО в нем
в run-time нет никакой информации о типах. Что интереснее - в общем-то
и не может быть.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2005-11-01 23:07 (ссылка)
open Obj^w^w^w

type num = Int of int | Float of float;;

let show x = match x with
Int i -> string_of_int i
| Float f -> string_of_float f;;

вроде работает

ну а вообще конечно нужно объяснять людям, что анархия с параметрами в некоторых языках - это костыль, а вот окамл - это протез.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2005-11-01 23:16 (ссылка)
Это статика. Там на самом деле нет информации о типах. Что до остального - я не от всех вещей в O'Caml в абстрактном восторге. Но O'Caml, в отличие от Haskell - очень сбалансированный язык. Как С (без ++) или Мodula-2.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polter
2005-11-01 23:29 (ссылка)
Ну у меня скомпилировало с проверкой в рантайме
И кабы ее не было, то Obj бы не работал, я так понимаю (я вообще не очень хорошо окамл знаю)

А вот кстати, в чем Haskell несбалансирован? Мне действительно интересно. Просто меня он полностью удовлетворяет обычно.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2005-11-01 23:35 (ссылка)
Проверка в runtime влияет только на всякие индексы у массивов (и выход оных за границу), да на assert'ы.
По поводу остального - я может сейчас разрожусть для затравки постингом в [info]programming

(Ответить) (Уровень выше)


[info]potan
2005-11-02 12:24 (ссылка)
Есть Printf.printf. Но сделан но, IMHO, через жопу. Я его начал на Camlp4 переделовать, но руки не доходят до ума довести.

(Ответить) (Уровень выше)


[info]polytheme
2005-11-01 20:40 (ссылка)
и - да, это не совсем OCaml - посмотрел я, а нет в LJR никаких сообществ по программированию. давайте его кто-нибудь заведет, а то я - явно не самый тут продвинутый программист.

(Ответить)

cyrillics
(Анонимно)
2005-11-07 14:47 (ссылка)
А как в нем работать с кириллическими строками? в koi8, например?
ну, up/downcase, сортировать и сравнивать?

(Ответить)