-- | Disciple Core Salt. -- -- This is what happens to 'C' when you leave it out in the sun for too long. -- -- Salt is a fragment of System-F2 that contains just those features that -- can be easily mapped onto C or LLVM code. It has functions, case -- expressions and primops, but no partial application, data types, or nested -- functions. All operations on algebraic data need to have been expanded to -- primitive store operations. -- -- Salt exposes raw store and control primops, so its possible for functions -- written directly in Salt to corrupt the heap (if they are wrong). -- module DDC.Core.Salt ( -- * Language profile profile -- * Conversion , seaOfSaltModule , Error(..) -- * Names , Name (..) , PrimTyCon (..) , PrimOp (..) , PrimCast (..) , primCastPromoteIsValid , primCastTruncateIsValid , PrimCall (..) , PrimControl (..) , PrimStore (..) , PrimArith (..) -- * Name parsing , readName -- * Program lexing , lexModuleString , lexExpString) where import DDC.Core.Salt.Name import DDC.Core.Salt.Profile import DDC.Core.Salt.Convert