Публикации по теме '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 просмотров
schedule
20.07.2023
Зачем нужны контейнеры?
(В качестве оправдания: заголовок имитирует заголовок Зачем нам нужны монады? )
Существуют контейнеры (и проиндексированные ) (и хазохистские ) и описания . Но контейнеры проблемны , и, судя по моему небольшому опыту, мне труднее думать с...
1301 просмотров
schedule
12.05.2023
Один тип против нескольких типов
Я буду говорить немного абстрактно, чтобы постановка задачи была краткой и емкой. Для всех целей предположим, что .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