Вопросы по теме 'typed-racket'
Как написать функции более высокого порядка, которые принимают полиморфные функции в качестве аргументов в Typed Racket?
Например, как мне написать версию map , которая будет работать с полиморфными функциями в Typed Racket? Я использую простую функцию id , определенную как:
(: id : (All (A) A -> A))
(define (id x) x)
Когда я пытаюсь сопоставить его со...
773 просмотров
schedule
29.07.2023
Отношение подтипов между типами структур в typed/racket
Если в typed/racket я определяю три struct :
(struct: foo ([a : Number]))
(struct: bar ([b : String]))
(struct: st ([a : Number] [b : String] [c : Number]))
Как сделать так, чтобы st был одновременно подтипом foo и bar , чтобы работали...
167 просмотров
schedule
19.07.2023
Почему `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
Как определить экземпляр полиморфной структуры данных Union в Typed Racket?
Из Руководства по типизированному рэкету , чтобы определить тип объединения, просто используйте (define-type Some-Type (U Type1 Type2)) .
Чтобы определить полиморфные структуры данных, используйте что-то вроде (define-type (Opt a) (U ...)) ....
198 просмотров
schedule
18.06.2022
Сумма списка со всеми промежуточными значениями
Я пытаюсь вычислить сумму списка со всеми промежуточными значениями на этом пути. Мой код выглядит следующим образом, но он не работает.
(: sums : (Listof Integer) -> (Listof Integer))
;; compute the sum of a list,
;; produce all the...
591 просмотров
schedule
14.11.2022
Несоответствие типов в векторном перекрестном произведении
Мне нужно сделать векторное перекрестное произведение в typed/racket. Следующий код отлично работает в #lang racket без аннотаций типов. ссылка
#lang typed/racket
(: cross-product (-> VectorTop VectorTop VectorTop))
(define...
159 просмотров
schedule
30.12.2022
Typed Racket конвертировать Any to All (a)
Я пытаюсь вызвать take на выходе flatten . Проблема в том, что take требует список a , а flatten возвращает список Any . Есть ли способ конвертировать между ними? Или какой-то другой подход, который я должен использовать? Я не смог найти...
143 просмотров
schedule
10.04.2024
Построить структуру с применением в типизированной ракетке
Я пытаюсь создать списки структур с применением в Typed Racket, но не могу понять, как заставить его работать. Я предполагаю, что это связано с проблемой полиморфных функций, но я не могу найти обходной путь.
Это работает:
(struct tt ([a :...
166 просмотров
schedule
05.12.2023
Понимание поведения средства проверки типов вокруг `case-›`
В REPL это то, что я получаю, когда проверяю тип car
> car
- : (All (a b) (case-> (-> (Pairof a b) a) (-> (Listof a) a)))
Он возвращает элемент первого типа в паре при передаче пары, где второе значение может не существовать....
26 просмотров
schedule
15.07.2023
Проблема несоответствия типов sub1
Я не могу понять, почему функция sub1 в pick1 имеет проблему с несоответствием типов, а pick0 — нет.
(define-predicate one? One)
(: pick1 (-> Positive-Integer (Listof Any) Any))
(define pick1
(λ(n lat)
(cond [(one? n) (car lat)]...
101 просмотров
schedule
13.06.2023