powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / OCaml, как превратить Set в List?
10 сообщений из 10, страница 1 из 1
OCaml, как превратить Set в List?
    #37981102
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть тип 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
OCaml, как превратить Set в List?
    #37981193
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

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

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

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

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

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


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

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

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

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

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


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