ocaml логическое определение функции, которая содержит элемент, возвращающий истину, если так или иначе ложь - PullRequest
0 голосов
/ 06 февраля 2019

Я не уверен, почему это вызывает у меня ошибку.Спасибо за любую помощь, спасибо!Вопрос в следующем: «Определить функцию, содержащую взятие элемента и списка и возвращающую true, если элемент находится в списке, и false в противном случае».

Мой ответ:

let contains elt l = 
    if l = l
      then true
    else
      false;;

Он говорит, что все верно, когда я проверяю его.

ОБНОВЛЕНИЕ:

Я думаю, что это ближе к ответу, но все еще не может заставить его работать.

    let rec contains elt l = 
      if 
        elt = l
        l = []
      then true
      else
      false;;

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Правильный ответ:

    let contains elt l = 
      match l with
      [] -> false
      | y :: ys -> elt = y || contains elt ys
      ;;

Спасибо за помощь!

0 голосов
/ 06 февраля 2019

Давайте применим вашу функцию к 5, вот как компьютер будет уменьшать / оценивать ваш код:

 contains elt 5 => if 5 = 5 then true else false

очевидно, 5 всегда будет равно 5.Более того, переменная всегда будет равна самой себе.

Совет 1: вы не используете первый параметр

Совет 2: второй параметр представляет собой список элементов, в которых вы должны искать первый параметр

Совет 3: вам нужно использовать рекурсию и деконструировать второй параметр и сравнить каждый элемент списка с предоставленной переменной elt.

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