Skip to content

VoQn/cacco

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cacco

cacco
Important
Cacco is still in the design stage. It’s not working yet.

Introduction

Comment

;; This is inline comment (to the end of the line).

(; (1)
  This is block comment.
  block comment is keeping until the terminator -> ;) ;; (2)

(;
  (; These block comments can be nested. ;)
;)
  1. (; is the start of block comment

  2. ;) is the end of block comment

Literals

0     ;; Fuzzy Numeric.  (default: Natural)
-1 +1 ;; Fuzzy Integer.  (default: Integer)
0.0   ;; Fuzzy Decimal.  (default: Decimal)
1/2   ;; Rational.
'a'   ;; Character.      (same as Uint32)
""    ;; Fuzzy Text.     (default: String_UTF8)
:key  ;; Keyword.
[]    ;; Fuzzy Sequence. (default: List)
{}    ;; Key-Value Map.
Fuzzy Types Include Types

Fuzzy-Numeric

Uint8, Uint16, Uint32, Uint64, Natural, and Fuzzy-Integer

Fuzzy-Integer

Int8, Int16, Int32, Int64, Integer, and Fuzzy-Decimal

Fuzzy-Decimal

Float16, Float32, Float64, Flonum

Fuzzy-Text

Bytes, String-UTF8, String-UTF16, String-UTF32

Fuzzy-Sequence

List, Vector, Array, Sequence

Declaration and Reassign

;; Declare procedure or constant value or variable value.
(: x Integer)

;; Declare a constant value once.
(= x 1000)

;; Declare a mutable variable value.
(:= y 0)

;; Strictly typing with literal.
(= z (: 0 Uint8))
(:= w (: "something" Bytes))

;; Reassign
(=! y 1000)    ;; OK
(=! y "hello") ;; Can't. `y` has been declared as Number type.
(=! x 10)      ;; Can't. `x` has been declared as immutable.

Calling procedure

;; Simply calling a procedure.
(foo a b c)

;; Calling closure.
((|a| (* a a)) 10) ;; returns 100

Define procedure

;; Declare a procedure
(: cubic (-> Number Number)) ;;(1)

;; Define the procedure
(= (cubic x) (* x x x))
  1. (→ T1 T2 …​ Tn) is Function type receive T1, T2 …​ then return value as Tn type.

Development

Prerequisites

  • Haskell Stack

Build and Testing

Simply building libraries and application

stack build

Clean

stack clean

Run Tests

# simply run test-suites
stack test

# run test-suites and generate coverage-report
stack test --coverage

# open coverage-report in your browser
open $(stack path --local-hpc-root)/index.html

Check Haddock

stack haddock

open $(stack path --local-doc-root)/index.html

About

(A programming language)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published