Мне нужны определения функций, которые имеют следующие типы OCaml

Я изучаю ocaml и не могу понять функции этих типов. благодаря.

1- string option list -> int -> string * string list

2- ('a -> 'a -> 'b) -> 'a -> ('a -> 'b) * 'b

3- 'a list -> 'b list -> ('a -> 'b -> 'a * 'b list)

person heo    schedule 27.10.2018    source источник
comment
Вам нужно будет приложить немного усилий, мы не просто сделаем за вас домашнее задание. Можете ли вы показать нам, что вы пробовали, и / или каковы ваши рассуждения, и указать на некоторые конкретные проблемы, с которыми вы столкнулись при выяснении этого? Также см. Как задать вопрос и открытое письмо учащимся с проблемами с домашним заданием.   -  person glennsl    schedule 27.10.2018
comment
Кроме того, сигнатура типа функции не является выражением того, что функция должна делать. Что здесь ожидается, совершенно непонятно.   -  person Richard-Degenne    schedule 28.10.2018
comment
@Richard-Degenne, нет необходимости в конкретной функции, достаточно получить эти типы.   -  person heo    schedule 28.10.2018
comment
@glennsl да, ты прав, но я новичок. если я смотрю здесь только для того, чтобы получить результат, извините за это. Я потратил некоторое время на этот вопрос, и я понимаю, что это пустая трата времени, я думаю. потому что, как сказал Ришар-Деженн, нет информации о функциях. если вопрос спрашивает, например, написать функцию bla bla и получить эти типы, я думаю, что смогу это сделать, но сейчас я не могу понять. Если вы дали мне подсказку, например, если вы сделаете эту функцию, возможно, вы сможете получить эти типы, которых мне будет достаточно. благодаря.   -  person heo    schedule 28.10.2018
comment
Вы читали открытое письмо? Я не знаю, что ваш учитель хочет, чтобы вы узнали из этого, но очень маловероятно, что они сделали это только для того, чтобы тратить ваше время. Без контекста и принимая за чистую монету, я бы сказал, что это, вероятно, должно научить вас читать типы, и это, учитывая то, что вы узнали до этого, должно быть довольно тривиально придумать реализацию, которая соответствует этим типам. Специфика реализации, наверное, не важна, ее просто нужно передать компилятору, используя приведенные выше сигнатуры типов. Не могли бы вы объяснить мне своими словами, что означают типы?   -  person glennsl    schedule 28.10.2018
comment
такие как строка, целое число... тип переменной, которую я мог бы сказать?   -  person heo    schedule 28.10.2018
comment
Как * функция, которая принимает два аргумента, кортеж строки и список строк и необязательное логическое значение, а затем возвращает список целых чисел.   -  person glennsl    schedule 28.10.2018
comment
сначала функция принимает два аргумента, список строк и целое число, а затем возвращает кортеж строк и список строк.   -  person heo    schedule 28.10.2018
comment
Это почти правильно. Первый тип аргумента отключен. Если вы сможете отредактировать свой вопрос, сделать то же самое для каждого из них и добавить некоторые мысли о том, как, по вашему мнению, типы аргументов и тип возвращаемого значения могут быть связаны друг с другом, мы можем помочь вам соединить последние несколько точек.   -  person glennsl    schedule 28.10.2018


Ответы (1)


Непонятен вопрос о том, что на самом деле должны делать функции.

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

Например, может выглядеть так:

let my_function (a : string option list) (b : int) : string * string list = ("", []);;

Я просто не понимаю, как такое упражнение может быть полезным.

person Richard-Degenne    schedule 28.10.2018
comment
Я предполагаю, что есть дополнительное условие, согласно которому вы должны использовать аргументы для получения возвращаемого значения. Или, если нет, вам все равно придется сделать это для секунд. Я думаю, что это упражнение полезно для обучения чтению и пониманию шрифтов. Если бы упражнение включало описание реализации, основное внимание было бы уделено реализации в соответствии с описанием, а не типами. - person glennsl; 28.10.2018
comment
Кроме того, первая задача упражнения часто относительно тривиальна, чтобы подготовить почву и намекнуть на шаблон, которому нужно следовать, чтобы решить остальные. Это должно быть относительно очевидно и легко для выполнения, в то время как 2 и 3 здесь включают переменные типа и функции более высокого порядка, требующие значительно более глубокого понимания. - person glennsl; 28.10.2018
comment
Как я уже сказал, вопрос совершенно не ясен. Мой ответ основан на том, что на самом деле упоминается в вопросе. Если ОП захочет добавить больше контекста, я буду рад соответствующим образом отредактировать свой ответ. - person Richard-Degenne; 30.10.2018