Описание тега letrec
Рекурсивная конструкция let, например, в схеме, тогда как "правая часть" может относиться к определяемому имени. Называя неявно определенную процедуру, мы можем использовать ее повторно, т.е. вызывать ее рекурсивно.
1
ответ
Летрек в Скала? (Неизменный способ "завязать узел?")
Предположим, у меня есть глупый маленький класс case, например: case class Foo(name: String, other: Foo) Как я могу определить a а также b неизменно так, что a.other является b, а также b.other является a? Предоставляет ли scala какой-либо способ "з…
06 июн '12 в 00:26
2
ответа
В чем преимущества letrec как функции языка программирования
Я посмотрел на все, что я могу найти о letrec, и я до сих пор не понимаю, что он привносит в язык как функцию. Кажется, что все, что можно выразить с помощью letrec, можно так же легко написать как рекурсивную функцию. Но есть ли причины выставлять …
10 дек '17 в 13:58
4
ответа
Как мне написать функцию для создания круговой версии списка в OCaml?
Можно создавать бесконечные циклические списки, используя let rec, не прибегая к изменяемым ссылкам: let rec xs = 1 :: 0 :: xs ;; Но могу ли я использовать эту же технику для написания функции, которая получает конечный список и возвращает его беско…
20 окт '14 в 21:50
1
ответ
Схема летрека бесконечной среды
В настоящее время я пишу метациркуляционный оценщик в Scheme, следуя инструкциям книги SICP. В упражнении меня просят выполнить letrecчто я делаю следующим образом: (define (letrec->let exp) (define (make-unassigned var) (list var '*unassigned*))…
11 янв '14 в 14:36
1
ответ
Почему этот код использует теневые привязки `let`?
Запуск этого кода: j = let x = 4 in let x = x * x in x в переводчике: ghci> j ... no response ... зависает с очень небольшим использованием процессора. Почему это? Я ожидал j = 16,
10 авг '12 в 13:13
2
ответа
Ocaml, реализуй freevars letrec используя наборы
Я пытаюсь реализовать letrec с использованием математической лямбда-нотации для функции, но у меня возникли трудности. Мое назначение говорит, что пусть может быть определено как p(e1) U (p(e2) - {x}) и этот letrec может быть определен как (p(e1) - …
24 мар '17 в 23:22
2
ответа
Летрек и реентерабельные продолжения
Мне сказали, что следующее выражение предназначено для оценки 0, но многие реализации Схемы оценивают его как 1: (let ((cont #f)) (letrec ((x (call-with-current-continuation (lambda (c) (set! cont c) 0))) (y (call-with-current-continuation (lambda (…
25 окт '12 в 22:15
2
ответа
Как реализовать "letrec" без использования "set!"?
Как может letrec быть реализованным без использования set!? Мне кажется, что set! является императивной программной конструкцией, и при ее использовании теряются преимущества функционального программирования.
11 дек '11 в 23:35
1
ответ
В чем разница между R6RS `letrec`, `letrec*`и Racket`letrec`?
И то и другое letrec а также letrec* в R6RS, но есть только letrec в ракетке нет letrec*, Каковы различия между ними?
07 дек '13 в 11:17
2
ответа
Как сопоставить шаблон 'letrec'
Я пытаюсь сделать сопоставление вызовов в letrec с помощью match-lambda. Мне кажется, что эта картина: (match-lambda (`(letrec ((,<var> ,<val>) . (,<vars> ,<vals>)) ,<expr> . ,<exprs>) `(<match>)) должны соо…
15 мар '11 в 03:54
1
ответ
Понимание хвостовой рекурсии 2
Первоначально я опубликовал один вопрос " понимание хвостового рекурсивного ответа вектора -> списка", и это дополнительные вопросы. мое общее понимание схемы действительно расплывчато. поэтому у меня теперь есть еще несколько вопросов: ;;;;;; origi…
09 май '14 в 07:51
1
ответ
Может ли локальная процедура быть привязанной к переменной в letrec без использования лямбды?
Я новичок в схеме. Раньше я делал подобные программы, используя letrec и linding. (define (drop l n) (letrec ((iter (lambda(ls x) (cond ((null? ls) ls) ((> x 1) (cons (car ls) (iter (cdr ls) (- x 1)))) (else (iter (cdr ls) n)))))) (iter l n))) (d…
17 авг '15 в 11:02
16
ответов
Какие языки поддерживают * рекурсивные * функциональные литералы / анонимные функции?
Кажется, в наши дни довольно много основных языков поддерживают функциональные литералы. Их также называют анонимными функциями, но мне все равно, есть ли у них имя. Важно то, что литерал функции - это выражение, которое дает функцию, которая еще не…
01 окт '08 в 05:46
3
ответа
Haskell `let` связывания в лямбда-исчислении
Я хочу понять как let привязки работают в Haskell (или, может быть, лямбда-исчисление, если реализация Haskell отличается?) Я понял из чтения Пишу вам Haskell, что это действительно для одного let связывание. let x = y in e == (\x -> e) y Это име…
06 янв '19 в 05:08
2
ответа
Почему не letrec как починить?
В статье Fixing Letrec: точная, но эффективная реализация рекурсивной связывающей конструкции схемы Dybvig et al. сказано что (выделено мое): Теоретическим решением этих проблем является ограничение letrec так что его левые стороны не назначены, а п…
13 июл '13 в 15:07
2
ответа
Каковы различия между "let" или "letrec" и "define" для создания локальных привязок?
Я не понимаю, в чем различия (извините за надуманный пример): (define average (lambda (elems) (define length (lambda (xs) (if (null? xs) 0 (+ 1 (length (cdr xs)))))) (define sum (lambda (xs) (if (null? xs) 0 (+ (car xs) (sum (cdr xs)))))) (define to…
13 июл '12 в 02:15
1
ответ
Конд с локальной привязкой
Мой вопрос о переписывании вложенных условий if для одного cond с веткой, имеющей локальную привязку. Я очень новичок в Racket, просто делаю свои первые шаги, поэтому, если мой вопрос глуп, пожалуйста, будьте снисходительны. Вкратце задача состоит в…
27 фев '13 в 10:07
2
ответа
Преобразование функции, которая вычисляет фиксированную точку
У меня есть функция, которая вычисляет фиксированную точку с точки зрения итерации: equivalenceClosure :: (Ord a) => Relation a -> Relation a equivalenceClosure = fst . List.head -- "guaranteed" to exist . List.dropWhile (uncurry (/=)) -- remo…
09 июн '11 в 22:52
3
ответа
Каковы преимущества letrec?
Читая "Закаленный интриган", я начал узнавать о letrec, Я понимаю, что он делает (может дублироваться Y-Combinator), но книга использует его вместо повторения на уже defineФункция d работает с аргументами, которые остаются статичными. Пример старой …
13 янв '10 в 22:24
6
ответов
Как мне использовать fix, и как это работает?
Я был немного смущен документацией для fix (хотя я думаю, что понимаю, что он должен делать сейчас), поэтому я посмотрел на исходный код. Это оставило меня более смущенным: fix :: (a -> a) -> a fix f = let x = f x in x Как именно это возвращае…
24 янв '11 в 21:34