File: mutable-array.rkt

package info (click to toggle)
racket 7.9%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 178,684 kB
  • sloc: ansic: 282,112; lisp: 234,887; pascal: 70,954; sh: 27,112; asm: 16,268; makefile: 4,613; cpp: 2,715; ada: 1,681; javascript: 1,244; cs: 879; exp: 499; csh: 422; python: 274; xml: 106; perl: 104
file content (34 lines) | stat: -rw-r--r-- 1,077 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#lang racket/base

(require typed/untyped-utils
         typed/racket/base
         (for-syntax racket/base syntax/parse)
         "array-syntax.rkt"
         (except-in "typed-mutable-array.rkt"
                    vector->array))

(require/untyped-contract
 (begin (require (only-in "typed-mutable-array.rkt" Mutable-Array)))
 "typed-mutable-array.rkt"
 [vector->array  (All (A) (case-> ((Vectorof A) -> (Mutable-Array A))
                                  ((Vectorof Integer) (Vectorof A) -> (Mutable-Array A))))])

(provide
 ;; Mutable-Array
 Mutable-Array
 mutable-array?
 mutable-array-data
 vector->array
 unsafe-vector->array
 mutable-array-copy
 mutable-array
 ;; Conversion
 array->mutable-array)

(define-syntax (mutable-array stx)
  (syntax-parse stx #:literals (:)
    [(_ e:expr)
     (syntax/loc stx (array/syntax mutable-array vector unsafe-vector->array e))]
    [(_ e:expr : T:expr)
     (syntax/loc stx (array/syntax mutable-array (inst vector T) unsafe-vector->array e))]
    [_:id  (raise-syntax-error 'mutable-array "not allowed as an expression" stx)]))