gluon 0.13.1

A static, type inferred programming language for application embedding
Documentation
//@NO-IMPLICIT-PRELUDE
//! A UTF-8 encoded string

let string_prim = import! std.string.prim
let prim = import! std.prim
let { Semigroup, (<>) } = import! std.semigroup
let { Monoid } = import! std.monoid
let { Show } = import! std.show
let { Eq, Ord, Ordering } = import! std.cmp
let function = import! std.function

let semigroup : Semigroup String = { append = string_prim.append }

/// Appends two strings.
///
/// Re-export of `semigroup.append`.
#[infix(left, 4)]
let (++) : String -> String -> String = (<>)

let monoid : Monoid String = { semigroup, empty = "" }

let eq : Eq String = { (==) = prim.string_eq }

let ord : Ord String = { eq, compare = prim.string_compare }

let show : Show String = { show = \s -> "\"" ++ s ++ "\"" }

{
    eq,
    ord,
    show,
    semigroup,
    monoid,
    (++),
    ..
    string_prim
}