Публикации по теме 'lambda-calculus'
Как получить Y-Combinator в схеме?
Некоторое время назад я закончил замечательную книгу под названием Маленький интриган . Это очень короткая книга, но она оказывает на меня самое глубокое влияние, когда дело доходит до программирования.
Книга представлена в формате вопрос/ответ. Он начинается с основ и постепенно переходит к таким концепциям, как Y-Combinator.
Честно говоря, мне пришлось вернуться туда и обратно, чтобы понять происхождение Y-Combinator, но у меня действительно был момент «Ага», когда я наконец..
Вопросы по теме 'lambda-calculus'
Преобразование Python в Haskell/лямбда-исчисление
Что такое код Python в Haskell и лямбда-вычислениях?
def f1():
x = 77
def f2():
print x
f2
f1
Моя попытка лямбда-исчисления
\x. 77 (\x.x)
1627 просмотров
schedule
09.05.2022
Итерационная функция в лямбда-исчислении
у меня есть такая функция
iter :: Int -> (a -> a) -> a -> a
iter n f a = f (f ... (f a) .. )
как я могу определить такую функцию в нетипизированном лямбда-исчислении?
любой намек/помощь будут оценены.
816 просмотров
schedule
30.01.2023
Выражение цифр Чёрча с помощью Boost.Bind
Числа Черча могут быть выражены в C++0x (C++11?), используя новые лямбда-части языка, используя что-то вроде это :
typedef function<int(int)> F;
static const F id = [=](int x) { return x; };
function<F(F)> church(unsigned int i)
{...
192 просмотров
schedule
27.08.2022
Преобразование лямбда-выражения в схему
У меня есть это лямбда-лямбда-выражение: λx.(λy.(λz.x(yz)))
Я пытаюсь написать из него выражение Scheme.
Я сделал это:
(define (f x)(lambda(y z) (f (y z))))
Это правильно? Если нет, то что я делаю неправильно?
251 просмотров
schedule
21.08.2022
Повторное использование функции Lambda в Haskell
Я должен взять этот код:
f x y z = x^3 - g (x + g (y - g z) + g (z^2))
where g x = 2*x^2 + 10*x + 1
И переписать его без куда (или пусть).
Они хотят написать это с помощью лямбда-функции (\x ->...)
Я пытаюсь повторно использовать...
489 просмотров
schedule
31.01.2023
Встраивание типов высшего порядка (монад!) в нетипизированное лямбда-исчисление
Можно кодировать различные типы в нетипизированном лямбда-исчислении с помощью функций более высокого порядка.
Examples:
zero = λfx. x
one = λfx. fx
two = λfx. f(fx)
three = λfx. f(f(fx))
etc
true = λtf. t
false = λtf. f
tuple =...
1396 просмотров
schedule
23.04.2022
Токен END OF FILE с flex и bison (работает только без него)
Хорошо, это своего рода странный вопрос, потому что то, что у меня здесь, работает так, как я хочу. Я пишу синтаксический анализатор для выражения лямбда-исчисления. Таким образом, выражение может быть одним из четырех:
Переменная
постоянный...
1796 просмотров
schedule
09.11.2022
Лямбда-исчисление — почему здесь нельзя сделать еще одно бета-редукция?
Мне сказали, что термин
(z (λy.z x) (λy.y z))
уже в нормальной форме - но я не понимаю, почему. Нельзя ли сделать еще одну бета-редукцию в этом состоянии и заменить все вхождения y в терме (λy.z x) на (λy.y z) , чтобы оно оценивалось...
81 просмотров
schedule
27.06.2022
Можно ли это выразить в бесточечном стиле?
Учитывая следующее выражение для суммирования IEnumerable чисел:
let sum l = l |> Seq.reduce(+) //version a
можно ли устранить аргумент -- вот так?
let sum = Seq.reduce(+) //version b
Я получаю сообщение об ошибке от...
669 просмотров
schedule
22.03.2023
Почему этот редуктор лямбда-исчисления не уменьшает succ с 0 до 1?
data Term = Var Integer
| Apply Term Term
| Lambda Term
deriving (Eq, Show)
sub :: Term -> Integer -> Term -> Term
sub e v r = case e of
Var x -> if x == v then r else e
Apply m1 m2 -> Apply (sub...
497 просмотров
schedule
16.07.2022
Почему встроенная функция применяется к слишком малому количеству аргументов, которые считаются нормальной формой слабой головы?
В определении Haskell говорится:
Выражение находится в слабой нормальной форме головы (WHNF), если оно:
конструктор (в конечном итоге применяемый к аргументам), например True, Just (квадрат 42) или (:) 1
встроенная функция,...
1089 просмотров
schedule
23.05.2023
интерпретировать лямбда-му-исчисление Париго в Haskell
Можно интерпретировать лямбда-исчисление в Haskell:
data Expr = Var String | Lam String Expr | App Expr Expr
data Value a = V a | F (Value a -> Value a)
interpret :: [(String, Value a)] -> Expr -> Value a
interpret env (Var x) = case...
812 просмотров
schedule
06.08.2022
Доступ к внешней переменной внутри блока и Y-комбинатора
Я надеюсь, что вы все в порядке. Я реализую Y-комбинатор с фиксированной точкой в Harbour, и у меня с ним возникают проблемы. Что ж, Y-комбинатор можно определить с помощью лямбда-исчисления как:
Y = (λh.λF.F(λ x.((h(h))(F))(x)))...
199 просмотров
schedule
30.08.2023
Как реализовать оптимальное уменьшение бета по смыслу Леви?
В 1990 году Джон Лэмпинг опубликовал статья, предлагающая оптимальную реализацию нетипизированного лямбда-исчисления. Поскольку этой газете уже 25 лет, интересно, насколько мы продвинулись с тех пор. Таким образом, мой вопрос: каково простое...
642 просмотров
schedule
27.12.2022
как частично применить произвольный аргумент функции?
Я хочу использовать частичное из functools, чтобы частично применить второй аргумент функции, я знаю, что это легко сделать с лямбдой, а не с частичным, как показано ниже.
>>> def func1(a,b):
... return a/b
...
>>> func2 =...
309 просмотров
schedule
20.09.2023
Приключения с нетипизированным лямбда-исчислением
Время от времени люди спрашивают о реализации нетипизированного лямбда-исчисления в Haskell. [Естественно, теперь я не могу найти ни один из этих вопросов, но я уверен, что видел их!] Просто ради смеха, я решил потратить некоторое время на игру с...
374 просмотров
schedule
18.07.2023
Найдите наиболее общие типы следующих терминов лямбда-исчисления.
Мне трудно понять, почему это самые общие типы для соответствующих церковных цифр:
2 = λf.λx. f (f x) : (α → α) → α → α
1 = λf.λx. f x : (α → β) → α → β
0 = λf.λx. x : β → α → α
Я думал, что все числительные Черча имеют один и тот же тип:...
373 просмотров
schedule
21.12.2022
Как уменьшить лямбда-исчисление
Я пытаюсь понять лямбда-исчисление и читаю замечательный статья .
На странице 8 есть выражение:
(λy.(x(λx.xy)))
Если я собираюсь заменить левый крайний край (λy) на t ,
(λy.(x(λx.xy))) t
то результат будет?
x(λx.xy)
169 просмотров
schedule
19.09.2022
Приведение члена лямбда-исчисления к нормальной форме
Это для домашнего задания, прежде чем кто-нибудь спросит, я просто ищу руководство.
Вот первый вопросительный термин:
(λx.λy.x y)(λx.x y)
=(λx.λz.x z)(λx.x y) α-renaming
=(λz.(λx.x y) z)
=(λx.x y)
Я хотел бы убедиться, что я...
469 просмотров
schedule
12.09.2022
Можно ли реализовать нетипизированное лямбда-исчисление только с использованием дженериков?
Рассмотрим следующую реализацию нетипизированного лямбда-исчисления:
pub enum Term {
Var(usize), // a variable with a De Bruijn index
Abs(Box<Term>), // an abstraction
App(Box<Term>, Box<Term>) // an application
}...
338 просмотров
schedule
26.06.2022