All Projects → akkartik → Arc

akkartik / Arc

Licence: other
Experimental fork of http://arclanguage.org, primarily for keyword args and generic functions

Programming Languages

arc
50 projects

An experimental and incompatible fork of the Arc programming language (http://arclanguage.org)

Important: If you are running a HN-like site, using this fork will mess up your data. Talk to me first, and be sure to make a backup.

Extensible coerce (rntz; http://arclanguage.org/item?id=9828) Macros can be defined in any order.

All functions are generic and can be extended for new conditions using 'defextend'. (Previous discussions: http://arclanguage.org/item?id=11779, http://arclanguage.org/item?id=11865, http://arclanguage.org/item?id=13790)

pervasive keyword args. If a function f has params (a b c), (f :c 3 1 2) <=> (f 1 2 3), etc. BUT this assumes no keyword syms in data: arc> (iso :x :x) # won't work because x is a param of iso

new arglist syntax: arc> (def foo (a ? b 34) (list a b)) arc> (foo 3) (3 34)

optional params and keyword args can't be combined with destructuring.

transparent persistence using 'persisted', which can be extended for new datatypes by supporting the generics 'serialize' and 'unserialize'.

srv: parse IP from X-Forwarded-For access static subdirectories more mime-types, more html attributes, more useful logging correctly sends crlf-terminated lines

Bugfixes: readline handles empty lines: http://awwx.ws/readline, http://arclanguage.org/item?id=10830 downcase/upcase on nil return nil: http://arclanguage.org/item?id=10793 each over tables returns nil

Case can work on lists and other compounds

  • Incompatibilities and gotchas
  1. temload and temstore are subtly different. If you've been using news.arc on your own site, make a backup before switching.
  2. nil == (); type.nil == nil.
  3. Optional args have a new syntax. (a (o b) (o c 3)) => (a ? b nil c 3)
  4. some and keep don't testify.
  5. Always handle null values when defining a generic
  6. srv no longer calls setuid. Run it behind apache or nginx, never as root.
  7. thread and new-thread require docstrings, like in autosave-thread in state.arc.
  8. case no longer autoquotes: http://arclanguage.org/item?id=13234
  9. List operations treat non-lists as degenerate dotted lists by default.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].