Цикл в схеме PLT

Я также пытался решить такую ​​задачу, как «сколько строк было удалено, добавлено или просто изменено за выбранный период времени». Поэтому я написал простой сценарий оболочки (только для Linux). Он собирает некоторые статистические данные о модификациях кода. Более подробную информацию и общий скрипт вы можете найти здесь:

http://cyber-fall.blogspot.com/2011/10/tools-linux-svn-generate-statistic.html

Надеюсь, это поможет вам и другим!

8
задан hello_there_andy 9 May 2015 в 16:03
поделиться

4 ответа

Ваш пример на Java не отображается напрямую на язык схемы, просто изучая несколько новых ключевых слов, поскольку нет явных конструкций для реализации цикла for в Scheme (если вы сами не пишете конструкцию!). Способ поваренной книги сделать это в Scheme - определить рекурсивную функцию, которая перебирает список. Вот пример того, как выполнить функцию в стиле цикла for в Scheme:

(define (doit x x-max dx)
  (if (<= x x-max)
    (begin
      ;;...perform loop body with x...
      (doit (+ x dx) x-max dx))))

(doit a b dx) ; execute loop from a to b in steps of dx

Взято с этой страницы:

Guile and Scheme Links

Вот еще одна ссылка на страницу, которая описывает идеи, которые вам нужно понять, чтобы перевести циклы от императивных языков к схеме:

Схема циклических конструкций

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

Циклические конструкции схемы

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

Циклические конструкции схемы

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

14
ответ дан 3 November 2019 в 12:50
поделиться

Итерационная конструкция в схеме - « do », вы можете найти ее в спецификации R5RS .

В приведенном вами примере будет выглядят примерно так:

(do ((i 0 (+ i 1))) ((> i 9))
  (do ((j 0 (+ j 1))) ((> j 2))
    (display j)
    (newline))
  (display i)
  (newline))

(do ...) является немного более общим, чем то, что показано в этом примере. Например, вы можете заставить его возвращать значение, а не просто использовать его для своих побочных эффектов. Также возможно иметь много «счетчиков»:

(do ((i 0 (+ i 1) 
     (j 0 (+ j 2)) 
    ((stop? i j) <return-value>)
   exprs...)
8
ответ дан 3 November 2019 в 12:50
поделиться

Предлагаю вам взглянуть на книгу Микеле Симионато "Приключения питониста в стране схем" . Это для схемы python->, но действительно хорошо написано и, что более важно, от процедурного-> функционального.

1
ответ дан 3 November 2019 в 12:50
поделиться

В PLT вы можете сделать следующее:

(for ([i (in-range 10)])
  (for ([j (in-range 3)]) (printf "~s\n" j))
  (printf "~s\n" i))
13
ответ дан 3 November 2019 в 12:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: