Share on Facebook Share on Twitter Email
Answers.com

Cayenne

 
Wikipedia: Cayenne (programming language)

Cayenne is a functional programming language with dependent types. The basic types are functions, products, and sums. Functions and products use dependent types to gain additional power.

There are very few building blocks in the language, but a lot of syntactic sugar to make it more readable. The syntax is largely borrowed from Haskell.

There is no special module system, because with dependent types records (products) are powerful enough to define modules.

The main aim with Cayenne is not to use the types to express specifications (although this can be done), but rather to use the type system to give type to more functions. An example of a function that can be given a type in Cayenne is printf.

PrintfType :: String -> #
PrintfType (Nil)          = String
PrintfType ('%':('d':cs)) = Int    -> PrintfType cs
PrintfType ('%':('s':cs)) = String -> PrintfType cs
PrintfType ('%':( _ :cs)) =           PrintfType cs
PrintfType ( _ :cs)       =           PrintfType cs

printf' :: (fmt::String) -> String -> PrintfType fmt
printf' (Nil)          out = out
printf' ('%':('d':cs)) out = \ (i::Int)    -> printf' cs (out ++ show i)
printf' ('%':('s':cs)) out = \ (s::String) -> printf' cs (out ++ s)
printf' ('%':( c :cs)) out =                  printf' cs (out ++ c : Nil)
printf' (c:cs)         out =                  printf' cs (out ++ c : Nil)

printf :: (fmt::String) -> PrintfType fmt
printf fmt = printf' fmt Nil

The Cayenne implementation is written in Haskell, and it also translates to Haskell.

External links


Search unanswered questions...
Enter a question here...
Search: All sources Community Q&A Reference topics
Shopping: Cayenne
Top
 
 

 

Copyrights:

Wikipedia. This article is licensed under the Creative Commons Attribution/Share-Alike License. It uses material from the Wikipedia article "Cayenne (programming language)" Read more