Advertisement
trannus_aran

typed lisp formats

May 3rd, 2025 (edited)
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.49 KB | None | 0 0
  1. ;;; typed-lisp-formats.lisp -*- lisp -*-
  2.  
  3. ;; --------------------------------------
  4. ;; racket contract
  5. (define/contract (square n)
  6.   (-> number? number?)
  7.   (* n n))
  8.  
  9. ; (def (<name> <args>)
  10. ;   <signature-expr>
  11. ;   <body>)
  12.  
  13.  
  14. ;; --------------------------------------
  15. ;; typed racket
  16. (: square (-> number? number?))
  17. (define (square n)
  18.   (* n n))
  19.  
  20. ; (: <name> <signature-expr>)
  21. ; (def (<name> <args>)
  22. ;     <body>)
  23.  
  24.  
  25. ;; --------------------------------------
  26. ;; sbcl
  27. (declaim (ftype (function (fixnum) fixnum) square))
  28. (defun square (n)
  29.   (* n n))
  30.  
  31. ; (<declaration> (func (<input-type>) <output-type>) <name>)
  32. ; (def <name> (<arg>) <body>)
  33.  
  34.  
  35. ;; --------------------------------------
  36. ;; Coalton
  37. (coalton-toplevel
  38.   (declare square (Integer -> Integer)
  39.   (define (square n)
  40.     (* n n)))
  41.  
  42. ; (declare <name> <signature-expr>)
  43. ; (def (<name> <args>) <body>)
  44.  
  45.  
  46. ;; --------------------------------------
  47. ;; SICP
  48. (define (square n)
  49.   (let ((type (car n))
  50.         (x (cdr n)))
  51.     (if (eq? type 'integer)
  52.         (* x x)
  53.         (error “Bad tagged datum -- TYPE” n))))
  54.  
  55. ; (def (<name> <args>)
  56. ;   (<dispatch on datum car symbol>))
  57.  
  58.  
  59. ;; --------------------------------------
  60. ;; wasm
  61. (module
  62.   (func $sqr (param $n i32) (result i32)
  63.     local.get $n
  64.     local.get $n
  65.     i32.mult)
  66.   (export “square” (func $sqr))
  67. )
  68.  
  69. ; (def <name> (<semantic*> <symbol> <bitwidth-type>) …
  70. ;   <body>)
  71. ;
  72. ; *semantic | param
  73. ;           | result
  74. ;           | local
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement