Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / OCaml, как превратить Set в List? / 10 сообщений из 10, страница 1 из 1
03.10.2012, 01:53
    #37981102
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
Есть тип CharSet:
Код: sql
1.
module CharSet = Set.Make(Char)



Вот так вот вижу в stdout ожидаемое содержимое сета:
Код: sql
1.
  CharSet.iter (fun x -> print_char x) my_set;;



Пытаюсь превратить этот сет в список и получаю ошибки:
Код: plaintext
1.
2.
3.
4.
5.
6.
# CharSet.fold (fun acc x -> x :: acc) [] my_set;;
Characters 27-28:
  CharSet.fold (fun acc x -> x :: acc) [] my_set;;
                             ^
Error: This expression has type 'a list
       but an expression was expected of type 'a
       The type variable 'a occurs inside 'a list


В чем я не прав на этот раз?
...
Рейтинг: 0 / 0
03.10.2012, 08:54
    #37981193
k0rvin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
White Owl,

в том, что невнимательно прочитал документацию по модулю Set?

с fold
как надо =)
...
Рейтинг: 0 / 0
03.10.2012, 18:35
    #37982530
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
k0rvinWhite Owl,

в том, что невнимательно прочитал документацию по модулю Set?
Это я невнимательно читаю?! Это в документации фигня написана:
Module type Set.Stype elt
The type of the set elements.
То есть если верить документации, то elt это тип элемента. То есть в данном случае elt должен быть равен Char.
А в примере ты используешь elt как хранилище данных. рррррр....

k0rvin с fold
как надо =) Спасибо.
...
Рейтинг: 0 / 0
03.10.2012, 19:25
    #37982595
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
Или я действительно невнимательно читаю?
Module type Set.Sval fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
То есть моя ошибка в первом посте была в том, что я перепутал местами аккумулирующий список с элементом внутри функции и исходный принимающий список с обрабатываемым сетом.

Тогда мне нужно пояснение по вот этому набору стрелочек...
У inline функции указана сигнатура elt -> 'a -> 'a. Это надо понимать так что первым параметром идут данные типа elt, а вторым и третьим параметрами может быть все что угодно, так?
...
Рейтинг: 0 / 0
03.10.2012, 19:52
    #37982621
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
White OwlТогда мне нужно пояснение по вот этому набору стрелочек...
У inline функции указана сигнатура elt -> 'a -> 'a. Это надо понимать так что первым параметром идут данные типа elt, а вторым и третьим параметрами может быть все что угодно, так?
.... но!
В коде
Код: sql
1.
CharSet.fold (fun x acc -> x::acc) my_set [];


Я вижу только два параметра для inline-функции и два параметра после функции. Значит ли это что последние 'a означают результат функций? Или это необязательные параметры?
...
Рейтинг: 0 / 0
04.10.2012, 07:47
    #37982877
F#
F#
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
White OwlЯ вижу только два параметра для inline-функции и два параметра после функции. Значит ли это что последние 'a
означают результат функций? Или это необязательные параметры?

Прочитайте про каринг - у функции всегда один параметр. А x -> y -> z означает что функция принимает параметр x и возвращает функцию y -> z (то есть ту, которая принимает y и возвращает z). А запись f x y - это вызвать f x и вызвать результат с параметром y.

PS. А в F# есть List.ofSeq
...
Рейтинг: 0 / 0
04.10.2012, 07:54
    #37982883
k0rvin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
F#PS. А в F# есть List.ofSeq

А в Ocaml — Seq.elements, о чем я написал во втором примере. =)
...
Рейтинг: 0 / 0
04.10.2012, 10:08
    #37983041
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
F#,

Seq.toList еще)
...
Рейтинг: 0 / 0
04.10.2012, 15:19
    #37983847
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
Завидую.
...
Рейтинг: 0 / 0
04.10.2012, 18:54
    #37984355
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCaml, как превратить Set в List?
maytonЗавидую.чему?
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / OCaml, как превратить Set в List? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]