|
|
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
Надо: класс в котором хранится и несколько раз обрабатывается текст прочитанный из файла. Застрял на чтении из файла :( Нагуглил библиотеку http://code.google.com/p/ocaml-extlib/ которая должна по идее делать работу с текстовыми файлами очень простой. Скачал, распаковал, make, make install. Появилась кучка файлов в C:\OCaml\lib\site-lib\extlib\, в том числе и IO.cmi и IO.mli сделал микро-тест: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Получил Код: plaintext 1. 2. Закоментировал создание объекта в 10-ой строке. Получил ошибку: Код: plaintext 1. 2. Что я делаю не правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 23:42 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
White Owl, Модуль вроде нужно вначале подключить: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 08:56 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
White Owl, И у тебя let неправильный. Надо так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. http://ideone.com/l0ujV В вике есть примеры подключения модулей и let-синтаксиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 09:18 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
Все равно не понимаю. Если я добавляю in в объявление main, то ошибка на exit(0) больше не выдается. Но все равно не понятно, почему при закоментаренной десятой строке в которой создается объект с именем f не выдается ошибка на 11-ой и 12-ой строках где этот объект используется? И как на все это влияет in? Оно же должно ограничить область видимости объекта, так? Или какую роль оно здесь играет? С библиотекой по прежнему проблемы. На open IO;; компилятор ругается что плохой синтаксис. Без open IO, но с более длинной командой компиляции: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 18:31 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
Дошел до этого: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Это работает, только я не понимаю почему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 18:48 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
Ах да, команда компиляции последнего исходника: ocamlc -I +site-lib\extlib extlib.cma test.ml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 18:50 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
Еще один newbie-вопрос. Как делать условное ветвление? Если я правильно понимаю, if/then/else это функция а если мне не нужно ничего возвращать? Ну вот например как на OCaml сделать аналог такого кода: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 23:42 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
White Owl, ветвление: http://ideone.com/Z7Ur2 Но вообще оно всегда что-то возвращает. В Ocaml'е, как и в (почти) любом другом ФЯП любое выражение имеет какой-то тип и какое-то значение. Как следствие тип всех веток должен быть одинаковым и в примере выше тип выражения -- unit, значение -- (). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. соответственно, если сделать типы разными, то получим ошибку компиляции: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2012, 11:26 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
White OwlЕсли я правильно понимаю, if/then/else это функция Нет, не функция =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2012, 11:28 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
Ну хорошо. Вот конкретная задача: получить в командной строке имена нескольких текстовых файлов и обработать их. Значит нам первым делом надо разобрать командную строку: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Попытка откомпилировать выдает: Код: plaintext 1. 2. В чем я не прав на этот раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2012, 20:55 |
|
||
|
OCaml, хочу ликбез по сторонним библиотекам, классам и работе с файлами.
|
|||
|---|---|---|---|
|
#18+
White Owl, в том, что ты не ознакомился с системой типов. =) Функция Filename.check_suffix имеет тип string -> string -> bool, т.е. в некотором смысле функцией двух аргументов. Ты же пытаешься передать ей один аргумент — кортеж (string, string), т.е. использовать ее как (string, string) -> bool. http://ideone.com/eFxG6 http://caml.inria.fr/pub/docs/manual-ocaml/libref/Filename.html http://ru.wikipedia.org/wiki/Каррирование#OCaml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 00:12 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=64&tid=1342123]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 345ms |

| 0 / 0 |
