MultiLine Comments |
β |
/* */ |
/* A comment
*/ |
Line Comments |
β |
// |
// A comment |
hasSExpressions |
β |
|
null.sexp // A null S-expression value
() // An empty expression value
(cons 1 2) // S-expression of three values
([hello][there]) // S-expression containing two lists
(a+-b) ( 'a' '+-' 'b' ) // Equivalent; three symbols
(a.b;) ( 'a' '.' 'b' ';') // Equivalent; four symbols |
Lists |
β |
|
null.list // A null list value
[] // An empty list value
[1, 2, 3] // List of three ints
[ 1 , two ] // List of an int and a symbol
[a , [b]] // Nested list
[ 1.2, ] // Trailing comma is legal in Ion (unlike JSON)
[ 1, , 2 ] // ERROR: missing element between commas |
Type Annotations |
β |
|
int32::12 // Suggests 32 bits as end-user type
'my.custom.type' :: { x : 12 , y : -1 } // Gives a struct a user-defined type
{ field: something::'another thing'::value } // Field's name must precede annotations of its value
jpeg :: {{ ... }} // Indicates the blob contains jpeg data
bool :: null.int // A very misleading annotation on the integer null
'' :: 1 // An empty annotation
null.symbol :: 1 // ERROR: type annotation cannot be null |
hasSymbols |
β |
|
myvar2 // A different symbol
'hi ho' // Symbol requiring quotes |
hasDecimals |
β |
|
null.decimal // A null decimal value
0.123 // Type is decimal
-0.12d4 // Type is decimal
123_456.789_012 // Decimal with underscores
-0d-1 // Decimal maintains precision: -0. != -0.0
-0d0 // Negative zero decimal (distinct from positive zero) |
hasTimestamps |
β |
|
// Timestamps represent a specific moment in time, always include a local offset, and are capable of arbitrary precision.
2007-02-23T12:14Z // Seconds are optional, but local offset is not
2007-01-01T00:00-00:00 // Happy New Year in UTC, unknown local offset |
hasClobs |
β |
|
// The clob type is similar to blob in that it holds uninterpreted binary data. The difference is that the content is expected to be text, so we use a text notation thatβs more readable than Base64.
// An Ion clob type is similar to the blob type except that the denotation in the Ion text format uses an ASCII-based string notation rather than a base64 encoding to denote its binary value. It is important to make the distinction that clob is a sequence of raw octets and string is a sequence of Unicode code points.
// The string may only contain legal 7-bit ASCII character |
hasBlobs |
β |
|
// In the text format, blob values are denoted as RFC 4648-compliant Base64 text within two pairs of curly braces.
// A valid blob value with one required padding character.
{{ VG8gaW5maW5pdHkuLi4gYW5kIGJleW9uZCE= }} |
Strings |
β |
|
"hello world" |
Null |
β |
|
null |
Multiline Strings |
β |
|
( '''hello ''' // Sexp with one element
'''world!''' )
("hello world!") // The exact same sexp value
// This Ion value is a string containing three newlines. The serialized
// form's first newline is escaped into nothingness.
'''\
The first line of the string.
This is the second line of the string,
and this is the third line.
''' |
Integers |
β |
|
// http://amzn.github.io/ion-docs/docs/spec.html
null.int // A null int value
0 // Zero. Surprise!
-0 // ...the same value with a minus sign
123 // A normal int
-123 // Another negative int
0xBeef // An int denoted in hexadecimal
0b0101 // An int denoted in binary
1_2_3 // An int with underscores
0xFA_CE // An int denoted in hexadecimal with underscores
0b10_10_10 // An int denoted in binary with underscores |
Assignment |
β |
|
// A subset of symbols called identifiers can be denoted in text without single-quotes. |
Floats |
β |
|
// http://amzn.github.io/ion-docs/docs/spec.html
-0.12e4 // Type is float |
Structs |
β |
|
{ first : "Tom" , last: "Riddle" } // Structure with two fields
{"first":"Tom","last":"Riddle"} // The same value with confusing style
{center:{x:1.0, y:12.5}, radius:3} // Nested struct |
Comments |
β |
|
|
Booleans |
β |
|
null.bool
true
false |
Maps |
β |
|
{"name": "Mary"} |
Semantic Indentation |
X |
|
|
Case Insensitive Identifiers |
X |
|
|
File Imports |
X |
|
|
Ternary operators |
X |
|
|
Conditionals |
X |
|
|
Macros |
X |
|
|
Disk Output |
X |
|
|