[documentation updates
John Meacham <john@repetae.net>**20120123235724
 Ignore-this: 4122569454f5d19954480fa814f3b78c
] hunk ./docs/development.mkd 34
+      * HsSyck
hunk ./docs/pragmas.mkd 20
-_NOETA_            By default, jhc eta-expands all class methods to help enable optimizations. This disables this optimization.
+
+# Class Pragmas
+
+Pragma
+------             ---------------------------------------------------
+_NOETA_            By default, jhc eta-expands all class methods to help enable optimizations. This disables this behavior.
hunk ./docs/pragmas.mkd 32
+_CATALYST_          A special type of rewrite rule that only fires if it enables the use of another RULE, so a CATALYST may allow optimizations that require passing through a non-optimal intermediate stage.
hunk ./docs/pragmas.mkd 36
+# Type Pragmas
+
+Pragma
+------             ---------------------------------------------------
+_EXTTYPE_          Specify the external type that a data or newtype should use for foreign function interfaces. 
+                   The type must be a newtype or unary data constructor of a type that is already foreignable.
+                   This pragma must appear in the same file as the type declaration.
+                   Example {-# EXTTYPE CUShort "unsigned short" #-}
+
hunk ./docs/unboxed.mkd 9
+
+# Standalone deriving
+
+Jhc supports a standalone deriving mechanism under certain circumstances.
+
hunk ./docs/unboxed.mkd 23
+Jhc supports first class existential types, using the 'exists' keyword. It also supports
+existential data types in a similar fashion to ghc.
+
hunk ./docs/unboxed.mkd 32
-indicate their status as unboxed.
+indicate their status as unboxed. All unboxed values other than unboxed tuples
+are enabled by the -funboxed-value flag. For compatibility with GHC, the 
+MagicHash extension name also turns on unboxed-values.
hunk ./docs/unboxed.mkd 39
-unboxed tuple of two numbers. Unboxed tuples are enabled with -funboxed-tuples
-
+unboxed tuple of two numbers. Unboxed tuples are enabled with -funboxed-tuples.
+Unboxed tuples are kind-polymorphic, able to hold both boxed and unboxed values. 
+(but not another unboxed tuple)
hunk ./docs/unboxed.mkd 47
-have types 'Addr__' which is as synonym for 'BitsPtr_'.
+have types 'BitsPtr_'.
+
+## Unboxed Characters
+
+Unboxed characters can be expressed by putting a hash after a normal character 
+literal. Unboxed characters are of type Char_ which is a newtype of Bits32_ and
+defined in Jhc.Prim.Bits
hunk ./docs/unboxed.mkd 62
-rank-n types.
+rank-n types. Unboxed numbers do the right thing for enumerations, so 0# can be
+used for the unboxed False value and the appropriate type will be infered.
+
+## Operations on unboxed values
hunk ./docs/unboxed.mkd 67
+To operate on unboxed vaules you need to bring the appropriate primitive operators into
+scope. You can do this via the special form of FFI declaration for importing primitives.
+Any C-- primitive may be imported as well as a variety of utility routines. the primitive
+import mechanism is 'smart' in that it will dig through newtypes and take care of boxing/unboxing
+values as needed. So you can import a primitive on Char and it will take care of boxing the
+value up in the 'Char' constructor as well as the Char_ newtype for Bits32_, ultimately choosing
+the right Bits32_ primitive. imported primitives are normal haskell declarations so may be 
+exported/imported from modules or passed as higher order functions like normal.