опция строки для преобразования строки - PullRequest
3 голосов
/ 28 ноября 2011

Как преобразовать тип данных строкового параметра в строку в Ocaml?

let function1 data = 
  match data with
   None -> ""
   | Some str -> str 

Является ли моя реализация без ошибок?Здесь «данные» имеют значение типа string option.

Ответы [ 2 ]

7 голосов
/ 28 ноября 2011

Чтобы ответить на ваш вопрос, да.

Для этой простой функции ее легко найти в модуле Option.Например, Option.default полностью соответствует вашим целям:

let get_string data = 
    Option.default "" data

В этом модуле есть много других полезных функций для работы с типами опций, вы должны проверить их, чтобы избежать переопределения ненужныхфункции.

3 голосов
/ 28 ноября 2011

Другое дело, что компилятор скажет вам, если что-то не так. Если компилятор не жалуется, вы знаете, что все типы имеют смысл и что вы рассмотрели каждый случай в своем выражении match. Система типов OCaml исключительно хороша в нахождении проблем, оставаясь на вашем пути. Обратите внимание, что вам не приходилось определять какие-либо типы самостоятельно в этом небольшом примере - компилятор выведет, что тип data равен string option.

Многие проблемы, которые компилятор не может обнаружить, это те, которые мы не можем обнаружить. Мы не можем сказать, является ли отображение None пустой строкой тем, чем вы действительно хотели заниматься, хотя это кажется очень разумным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...