Публикации по теме 'idris'


Изучение Идриса: Relexivity Tactics one up Модульные тесты
Idris — это язык программирования с параметрическим полиморфизмом (вспомните дженерики), зависимыми типами (в качестве членов первого класса языка), средством проверки целостности (вспомните проблему остановки) и синтаксисом, подобным Haskell. Мои первые наблюдения за языком связаны с другой особенностью — синтаксисом доказательства. Большинство инженеров знакомы с модульными тестами, независимо написанными и автоматизированными тестами очень маленьких битов (модулей) кода. Обычно это..

Конечные автоматы Идриса в приложениях JavaScript
Написание приложений JavaScript, которые ведут себя так, как вы хотите, сложно. Поскольку JavaScript динамически типизирован, программист обычно не получает от интерпретатора указания, если в его программе есть ошибка. В этой статье я собираюсь продемонстрировать способ разработки приложений JavaScript с использованием функционального языка программирования с зависимой типизацией Idris . Зависимый тип - это тип, определение которого зависит от другого значения. Вы можете определять..

Вопросы по теме 'idris'

Литералы Идриса Ната в типах
Я хочу, чтобы Идрис доказал, что testMult : mult 3 3 = 9 обитаем. К сожалению, это набирается как mult (fromInteger 3) (fromInteger 3) = fromInteger 9 : Type Я могу обойти это так: n3 : Nat; n3 = 3 n9 : Nat; n9 = 9 testMult : mult n3...
374 просмотров
schedule 25.06.2022

Пользовательская тактика прувера в Идрисе
Если я правильно понимаю (в основном из-за наличия функции applyTactic ), то можно написать собственную тактику для доказателя теорем в Идрисе. Какие (или где) примеры я мог бы использовать, чтобы узнать, как это сделать?
726 просмотров
schedule 03.08.2022

Установка idris cabal не удалась. Следующие пакеты могут быть повреждены при переустановке
Сначала я выполняю процесс обновления/обновления Cabal, поэтому у меня есть cabal-install-1.20.0.3. Затем я делаю: cabal install idris Я получил: ... idris-0.9.14.1 (new version) The following packages are likely to be broken by the...
1308 просмотров
schedule 25.06.2023

Используя гетерогенное равенство с =
Что у меня есть до сих пор: module Foo postulate P : 'P postulate NP : 'NP complexityProof : P = NP complexityProof = ?complexityProof_rhs Но при попытке загрузить файл я просто получаю: When elaborating type of Foo.complexityProof:...
327 просмотров
schedule 11.10.2022

Idris - использовать неявную переменную внутри функции
Как мы можем использовать неявную переменную внутри функции? Сводя к простейшему возможному случаю, можно ли иметь: dim : Vect n a -> Nat dim vec = n без получения ошибки: When elaborating right hand side of rep: No such variable n...
294 просмотров
schedule 30.03.2023

Пример «Типа 1», который не является ни «Типом», ни обитателем «Типа».
Каков пример жителя Type 1 , который не является ни Type , ни жителем Type ? Я не мог ничего придумать, исследуя Idris REPL. Чтобы быть более точным, я ищу некоторые x , отличные от Type , которые дают следующее: Idris> :t x x : Type 1
186 просмотров
schedule 12.07.2023

Генерация доказательств во время выполнения с предикатами типов в Idris
Я использую этот тип, чтобы рассуждать о строках, для которых может быть выполнен разрешимый синтаксический анализ: data Every : (a -> Type) -> List a -> Type where Nil : {P : a -> Type} -> Every P [] (::) : {P : a -> Type}...
643 просмотров
schedule 26.06.2022

Сообщите зависимой функции в ветке условного оператора, что условие истинно
У меня есть функция с сигнатурой типа (x, y : SomeType) -> (cond x y) = True -> SomeType . Когда я проверяю условие в операторе if-then-else/case/with, как мне передать функции в соответствующей ветке тот факт, что это условие истинно?
1082 просмотров
schedule 14.06.2023

idris-mode — в буфере *idris-repl* нет процесса
Я пытаюсь заставить работать режим idris. Я использую HEAD как из idris-dev , так и из idris-mode . Всякий раз, когда я запускаю C-l (idris-load-file), я получаю эту ошибку Debugger entered--Lisp error: (file-error "make client process failed"...
258 просмотров
schedule 07.03.2023

Генерировать библиотеку вместо исполняемого файла в Idris?
Есть ли способ создать библиотеку вместо исполняемого файла с помощью idris ? Если я попытаюсь скомпилировать без main , я получу такую ​​ошибку: main:0:0:When elaborating an application of function run__IO: No such variable Main.main...
1474 просмотров
schedule 14.02.2023

Как лучше всего использовать число во время компиляции и выполнения?
Я только начинаю изучать Идрис и решил, что для начала неплохо было бы реализовать конечные последовательности в виде деревьев на 2-3 пальца. Каждый внутренний узел в дереве необходимо аннотировать во время выполнения с указанием общего количества...
95 просмотров
schedule 21.09.2022

Какой хороший способ представлять свободные группы?
Легко представить свободные магмы (бинарные листовые деревья), свободные полугруппы (непустые списки) и свободные моноиды (списки), и несложно доказать, что они на самом деле являются тем, за что себя выдают. Но бесплатные группы кажутся намного...
146 просмотров
schedule 14.05.2022

Как сопоставить пару/кортеж?
В Haskell я бы сделал join (***) . В Идрисе flatten (***) не работает ( (***) сложно).
222 просмотров
schedule 08.10.2022

Доказать карту id = id в idris?
Я только начинаю играть с идрисом и доказательством теорем в целом. Я могу следовать большинству примеров доказательства основных фактов в Интернете, поэтому я хотел попробовать что-то произвольное самостоятельно. Итак, я хочу написать доказательный...
369 просмотров
schedule 15.07.2022

StringOrInt от Idris -> Scala?
Разработка на основе шрифтов с помощью Idris представляет эту программу: StringOrInt : Bool -> Type StringOrInt x = case x of True => Int False => String Как такой метод можно написать на Scala?
752 просмотров
schedule 17.06.2022

(xs: Vect n elem) - ›Vect (n * 2) elem
В книге Type-Driven Development with Idris представлено это упражнение: Определите возможный метод, соответствующий подписи: two : (xs : Vect n elem) -> Vect (n * 2) elem Я пытался: two : (xs : Vect n elem) -> Vect (n * 2)...
228 просмотров
schedule 16.04.2022

Любые приемы, чтобы избавиться от шаблона при построении доказательств абсурдного предиката на перечислениях?
скажем, у меня есть data Fruit = Apple | Banana | Grape | Orange | Lemon | {- many others -} и предикат для этого типа, data WineStock : Fruit -> Type where CanonicalWine : WineStock Grape CiderIsWineToo : WineStock Apple...
358 просмотров

Как определить все подразмеры HVect?
Я хотел бы определить все подразмеры HVect как HVect . Пример: import Data.HVect myHVect : HVect [Int, String, List Nat] myHVect = [42, "text", [1, 2, 3]] subDimensions : HVect [ HVect [Int], HVect [Int, String], HVect [Int, String, List...
76 просмотров
schedule 02.09.2022

Функция для определения, делится ли Nat на 5 во время компиляции
Использование полезного ответа Cactus я попытался написать функцию, которая при наличии Nat вернет Nat , если оно делится на 5 . onlyModBy5Helper : (n : Nat) -> (k : Nat ** k `mod` 5 = 0) -> Nat onlyModBy5Helper n k = n И...
122 просмотров
schedule 27.06.2023

Как сравнить типы на равенство?
Я попытался сравнить String и String , ожидая True . Idris> String == String Can't find implementation for Eq Type Тогда я ожидал False при сравнении String с Bool . Idris> String /= Bool Can't find implementation for Eq...
873 просмотров
schedule 21.03.2023