Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;;; typed-lisp-formats.lisp -*- lisp -*-
- ;; --------------------------------------
- ;; racket contract
- (define/contract (square n)
- (-> number? number?)
- (* n n))
- ; (def (<name> <args>)
- ; <signature-expr>
- ; <body>)
- ;; --------------------------------------
- ;; typed racket
- (: square (-> number? number?))
- (define (square n)
- (* n n))
- ; (: <name> <signature-expr>)
- ; (def (<name> <args>)
- ; <body>)
- ;; --------------------------------------
- ;; sbcl
- (declaim (ftype (function (fixnum) fixnum) square))
- (defun square (n)
- (* n n))
- ; (<declaration> (func (<input-type>) <output-type>) <name>)
- ; (def <name> (<arg>) <body>)
- ;; --------------------------------------
- ;; Coalton
- (coalton-toplevel
- (declare square (Integer -> Integer)
- (define (square n)
- (* n n)))
- ; (declare <name> <signature-expr>)
- ; (def (<name> <args>) <body>)
- ;; --------------------------------------
- ;; SICP
- (define (square n)
- (let ((type (car n))
- (x (cdr n)))
- (if (eq? type 'integer)
- (* x x)
- (error “Bad tagged datum -- TYPE” n))))
- ; (def (<name> <args>)
- ; (<dispatch on datum car symbol>))
- ;; --------------------------------------
- ;; wasm
- (module
- (func $sqr (param $n i32) (result i32)
- local.get $n
- local.get $n
- i32.mult)
- (export “square” (func $sqr))
- )
- ; (def <name> (<semantic*> <symbol> <bitwidth-type>) …
- ; <body>)
- ;
- ; *semantic | param
- ; | result
- ; | local
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement