Lisp — первый подходящий элемент списка

Прикладное программирование Функциональное программирование Lisp — первый подходящий элемент списка

Помечено: ,

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #6932
      @nodeli
      StudLance.ru

      Здравствуйте! помогите пожалуйста написать программу на функциональном языке

      Написать функцию первый(f,x), которая возращает первое значение из списка x, для которого функция-предикат f возвращает T, и его индекс.

      первый(atom,'((A) B (C) D E F)) -> (B 2)

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

      StudLance.ru

    • #6934
      @admin

      (defun first_if (source pred) 
          (cond 
              ( (eq source ())        () )
              ( (eq (funcall pred (car source))  T)        (car source) )
              ( T         (first_if (cdr source) pred ) )
          )
      )
      
      (defun is_positive (value)
          (cond 
              ((> value 0)    T)
              (T          ())
          )
      )
      
      (print (first_if '(-5 -3 4 5 -5 60) (function is_positive)))

      Тут функция is_positive проверяет что число больше нуля. Она и передается в first_if в качестве аргумента — смотри как это делается в конце программы.

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

      Про индекс не понял.

Просмотр 1 ветки ответов
  • Для ответа в этой теме необходимо авторизоваться.
×