Описание тега combinatory-logic

Combinatory logic is a model of computation equivalent to the lambda calculus, but without abstraction.
2 ответа

Переводчик Haskell для языка System T Combinator

В предыдущем вопросе о компиляторе SystemT и работе с бесконечными типами в Haskell я спросил о том, как анализировать лямбда-исчисление SystemT в SystemT Combinators. Я решил использовать простые алгебраические типы данных для кодирования как лямбд…
2 ответа

Утилита Haskell для освобождения функции

Я хотел бы быстро и правильно сократить функции, чтобы указывать свободную форму в Haskell. Я бы предпочел производить довольно читаемые результаты. Как я должен идти об этом?
1 ответ

Эквивалентно методу #tap Руби в Scala

В Ruby есть метод, который позволяет нам наблюдать конвейер значений без изменения базового значения: # Ruby list.tap{|o| p o}.map{|o| 2*o}.tap{|o| p o} Есть ли такой метод в Scala? Я считаю, что это называется Kestrel Combinator, но не уверен.
24 май '13 в 19:10
1 ответ

Реализация комбинаторного исчисления

концепция Я реализую интерпретатор, который позволяет пользователю определять произвольные комбинаторы и применять их к произвольным терминам. Например, пользователь может определить кодировку Черча для пар, введя следующие определения комбинатора: …
0 ответов

Понимание функции eval, используемой для определения комбинаторов и выражений (лямбда) в Haskell

Я нашел использование сопоставления с образцом для eval (App x y) избыточно, так как оба случая вернутся App x y, Интересно, если eval (App x y) нужен вообще, потому что у нас есть eval x = x в конце, который также должен включать eval (App x y) dat…
26 янв '19 в 06:58
1 ответ

Как разобрать строку в GADT

Я пытаюсь реализовать Combinatory Logic в Haskell, и я хотел бы написать в парсер для языка. У меня проблемы с получением парсера для работы через Parsec. Основная проблема заключается в том, что мне нужен способ обеспечить правильную типизацию объе…
17 окт '12 в 22:39
1 ответ

Экспресс XOR в комбайнах SKI

Я пытаюсь решить наверняка, но вы можете кататься на лыжах на Codewars. Это собирается выразить лямбда в комбинаторах SKI. Источник находится по адресу https://repl.it/@delta4d/SKI. После некоторых исследований, особенно в " Комбинаторной логике", я…
30 апр '18 в 07:37
3 ответа

Тип вывода для перегруженных функций - карри

Данный вызываемый объект (функция) aи аргумент b (или ряд аргументов), я хотел бы вывести тип, возвращаемый из f учитывая, что f перегружен множеством подписей. одна из моих многочисленных попыток #include <iostream> #include <cstdint> #…
05 дек '13 в 23:39
2 ответа

Представление лямбда-исчисления в NLTK CCG

Я пытаюсь реализовать вероятностный CGG с функциями лямбда-исчисления. В основном я хочу сделать следующий код: >> lex = parseLexicon(r''' :- S,NP He => NP {sem=\x.he(x)} [1.0] Walks => S\NP {sem=\X. walk(X)} [1.0] There => S\S {sem=\…
09 ноя '14 в 15:37
1 ответ

Шаблон в бессмысленном комбинаторе, как это связано с исчислением SKI

В качестве упражнения я преобразовал следующий комбинатор в бессмысленную запись: h f g x y z = f x (g y z) с обычным соглашением f, g, h как функции, и x, y, z как выражения. (Это не домашняя проблема, а просто для удовольствия и для того, чтобы по…
1 ответ

Компилятор SystemT и работа с бесконечными типами в Haskell

Я слежу за этим сообщением в блоге: http://semantic-domain.blogspot.com/2012/12/total-functional-programming-in-partial.html Здесь показана небольшая программа компилятора OCaml для System T (простой тотальный функциональный язык). Весь конвейер при…
1 ответ

Реализация арифметических птиц Смулляна в Хаскеле

В поисках информации о книге Рэймонда Смулляна " Чтобы издеваться над пересмешником" я наткнулся на код Хаскелла Стивена Тетли для основных комбинаторов. Я подумал, что это интересная идея, и решил реализовать "птиц, которые могут делать арифметику"…
04 фев '14 в 19:37
1 ответ

Что делает этот комбинатор: s (s k)

Теперь я понимаю тип подписи s (s k): s (s k) :: ((t1 -> t2) -> t1) -> (t1 -> t2) -> t1 И я могу создавать примеры, которые работают без ошибок в инструменте Haskell WinGHCi: Пример: s (s k) (\g -> 2) (\x -> 3) возвращается 2, П…
1 ответ

Как рекурсивно определить обобщенную функцию проекции?

Функции проекции, такие как id (1 P 1) и const (2 P 1) очень полезны в функциональном программировании. Однако иногда вам нужны более сложные проекционные функции, такие как 5 P 4. Вы можете написать это вручную в точечном стиле, как a => b =&gt…
3 ответа

Сигнатура типа комбинатора не совпадает с сигнатурой типа эквивалентной лямбда-функции

Рассмотрим этот комбинатор: S (S K) Применим это к аргументам X Y: S (S K) X Y Он заключает контракт с: X Y Я преобразовал S (S K) в соответствующие лямбда-члены и получил такой результат: (\x y -> x y) Я использовал инструмент Haskell WinGHCi, ч…
1 ответ

Найдите функции Хаскелла f, g такие, что f g = f . г

Изучая Haskell, я столкнулся с проблемой найти две функции f а также gтакой, что f g а также f . g эквивалентны (и всего, поэтому такие вещи, как f = undefined или же f = (.) f не в счет). Данное решение таково, что f а также g оба равны \x -> x …
2 ответа

Определить форму как имя функции?

Я хотел бы знать, что этот код означает на схеме: (define ((K x) y) x) (define (((S x) y) z) ((x z) (y z))) Весь файл здесь. Это правовая схема? Является ли (K x) параметризованной функцией, что-то вроде универсальных функций в Java? Я посмотрел ссы…
0 ответов

Тип рекурсивно-типизированных функций на Цейлоне

Есть ли способ добиться каких-то рекурсивно-типизированных функций на Цейлоне? Например, я могу определить комбинаторную логику на Цейлоне безопасным для типов способом, например, так: class Fi(shared Fi(Fi) o) { } Fi veritas = Fi((Fi t) => Fi((F…
0 ответов

Комбинаторная логическая библиотека для корректоров?

Я работаю над некоторыми вводными упражнениями комбинаторной логики, используя Coq. Я написал для нее грубую библиотеку, но она не очень эффективна. Существует ли библиотека комбинаторной логики для Coq или других помощников? Определения комбинаторо…
29 сен '14 в 05:58
1 ответ

Вывод типа для модели данных исчисления скала-комбинатора

Я пробую очень легкое кодирование исчисления комбинаторов в scala. Изначально я просто реализую комбинаторы S и K, приложение и постоянные значения. Позже я надеюсь поднять функции scala и разрешить оценку выражения как функции scala. Однако это на …