Публикации по теме 'type-theory'


Ковариация и контравариантность в Java
Учитывая, что Cat is a подкласс Animal, должен List<Cat> также быть подклассом List<Animal> ? Что вы думаете? Должен ли List<Cat> быть List<Animal> ? Что такое Function<? super T, ? extends U> в Java? Понимание концепции дисперсии - ключ к ответу на эти два, казалось бы, разных вопроса. Ковариация Разве не было бы замечательно, если бы везде, где принимается List<Animal> , можно было бы сдать и List<Cat> ? Но возникнут ли..

Как насчет:
Чтобы действительно изучить и освоить мощь Haskell, вам нужно забыть все, что вы знали об императивном программировании (да, действительно, обо всем) и строить на совершенно другом фундаменте. Как насчет: main = do putStr "What is your name?" a <- readLn putStr "How old are you?" b <- readLn print (a,b) Это совершенно необходимо ^^: main = do x <- pop pop push x То же самое ^^, и много кода..

Самоанализ типов сумм во время компиляции в Pure C99
Недавно я опубликовал сообщение в блоге о Datatype99 , библиотеке, реализующей типы сумм на чистом C99 только с макросами препроцессора. Сегодня я собираюсь представить его новую возможность метапрограммирования: самоанализ типов суммы во время компиляции, также только с макросами препроцессора. Прежде всего, что такое интроспекция типов? Для наших целей самоанализ типа означает поиск и манипулирование представлением типа: представьте на секунду, что вы можете собрать все варианты..

Язык типа ржавчины
Отказ от ответственности: если вы изучаете Rust, отнеситесь к этому с недоверием. Я тоже изучаю Rust и могу ошибаться в своих предположениях. Чем больше я читаю и занимаюсь Rust, тем больше понимаю, что Rust состоит из двух (трех, если считать макросы) языков. Один из них — это средний язык программирования, который опытный программист может выучить за неделю, плюс месяц или два для стандартной библиотеки и стандартных наборов. Он описывает приятные вещи, такие как циклы, сопоставление..

Вопросы по теме 'type-theory'

Поддерживает ли С++ 11 рекурсию типов в шаблонах?
Я хочу подробно объяснить вопрос. Во многих языках со строгой системой типов (таких как Felix, Ocaml, Haskell) вы можете определить полиморфный список, составив конструкторы типов. Вот определение Феликса: typedef list[T] = 1 + T * list[T];...
2789 просмотров
schedule 01.09.2022

Разница между параметрами типа и индексами?
Я новичок в зависимых типах, и меня смущает разница между ними. Кажется, люди обычно говорят, что тип параметризуется другим типом и индексируется некоторым значением . Но разве нет различия между типами и терминами в языке с зависимой...
3134 просмотров
schedule 26.09.2022

Почему `filter` работает с типизацией более высокого порядка?
На главной странице Racket они показывают этот пример: #lang typed/racket ;; Using higher-order occurrence typing (define-type SrN (U String Number)) (: tog ((Listof SrN) -> String)) (define (tog l) (apply string-append (filter string? l)))...
134 просмотров

Зачем нужны контейнеры?
(В качестве оправдания: заголовок имитирует заголовок Зачем нам нужны монады? ) Существуют контейнеры (и проиндексированные ) (и хазохистские ) и описания . Но контейнеры проблемны , и, судя по моему небольшому опыту, мне труднее думать с...
1301 просмотров

Один тип против нескольких типов
Я буду говорить немного абстрактно, чтобы постановка задачи была краткой и емкой. Для всех целей предположим, что .NET/C# является базовой технологией/языком. Допустим, вы пишете программу и проектируете некоторый класс/тип для представления...
166 просмотров
schedule 15.04.2023

Что такое бесконечные типы?
Судя по всему, в Haskell есть нечто, называемое бесконечным типом . Например, когда я пробую iterate concat на GHCi, я получаю следующее: *Main> iterate concat <interactive>:24:9: error: • Occurs check: cannot construct the...
949 просмотров
schedule 21.10.2022

Как доказать связь во время компиляции в Lean?
Скажем, у меня есть типаж: inductive is_sorted {α: Type} [decidable_linear_order α] : list α -> Prop | is_sorted_zero : is_sorted [] | is_sorted_one : Π (x: α), is_sorted [x] | is_sorted_many : Π {x y: α} {ys: list α}, x < y -> is_sorted...
80 просмотров
schedule 13.04.2022

Какой правильный термин для _ в подсказке типа?
В подсказках типов в Rust можно использовать частичные типы в аннотациях следующим образом: let myvec: Vec<_> = vec![1, 2, 3]; Какова правильная терминология для подчеркивания в аннотации частичного типа? Меня интересует как...
1223 просмотров
schedule 10.06.2022

Coq HoTT - Как правильно поместить определение в теорему?
Я завершил доказательство в coq (показано ниже) теоремы 2.8.1 из книги HoTT. Это работает, но я получаю это предупреждение Toplevel input, characters 0-4: <warning> Warning: Nested proofs are deprecated and will stop working in a future...
134 просмотров
schedule 23.06.2022

Монотонность оценки в Haskell
Пусть < обозначает порядок семантической аппроксимации в Haskell. Тогда монотонность оценки гарантирует, что если e1 < e2 , то [[e1]] < [[e2]] , где e1 , e2 — выражения, а [[e1]] обозначает оценку e1 . В...
130 просмотров
schedule 04.06.2023

Формулировка системы зависимых типов в Agda
Как можно сформулировать логику зависимого типа в Agda, но не «обмануть», повторно используя саму систему типов Agda? Я довольно легко могу определить логику с независимой типизацией: infixr 5 _⇒_ data Type : Set where _⇒_ : Type → Type →...
233 просмотров
schedule 23.04.2024