Cookbook
Common patterns and recipes for Wyn.
Read a File Line by Line
wyn
var content = File.read("data.txt")
for line in content.lines() {
println(line)
}Parse JSON
wyn
var data = "{\"name\": \"Alice\", \"age\": 25}".parse_json()
println(data.get_string("name")) // Alice
println("${data.get_int("age")}") // 25HTTP Server with JSON API
wyn
var server = Http.listen(3000)
while true {
var req = Http.accept(server)
var path = req.split("|")[1]
if path == "/api/hello" {
Http.respond(req, 200, Json.stringify({"message": "hello"}))
} else {
Http.respond(req, 404, "{\"error\": \"not found\"}")
}
}Concurrent Map
wyn
fn process(item: string) -> string {
return item.upper()
}
var items = ["hello", "world", "wyn"]
var futures = []
for item in items {
futures.push(spawn process(item))
}
var results = []
for f in futures {
results.push(await f)
}
// results: ["HELLO", "WORLD", "WYN"]CSV Processing
wyn
var csv = Csv.parse(File.read("data.csv"))
for i in 1..Csv.row_count(csv) {
var name = Csv.get_field(csv, i, "name")
var age = Csv.get_field(csv, i, "age")
println(name + " is " + age + " years old")
}String Manipulation
wyn
var s = " Hello, World! "
println(s.trim()) // "Hello, World!"
println(s.trim().upper()) // "HELLO, WORLD!"
println(s.trim().replace("World", "Wyn")) // "Hello, Wyn!"
println(s.trim().split(", ").join(" | ")) // "Hello | World!"HashMap
wyn
var m = HashMap.new()
HashMap.set(m, "name", "Alice")
HashMap.set(m, "city", "NYC")
println(HashMap.get(m, "name")) // Alice
println("${HashMap.len(m)}") // 2Logging
wyn
Log.set_level(1) // INFO and above
Log.info("starting")
Log.debug("hidden") // suppressed
Log.warn("careful")
Log.error("failed")Base64
wyn
var encoded = Base64.encode("secret data")
println(encoded) // c2VjcmV0IGRhdGE=
println(Base64.decode(encoded)) // secret dataCommand-Line Arguments
wyn
var name = Args.get("name")
var verbose = Args.has("v")
if name != "" {
println("Hello, " + name)
}Benchmarking
wyn
fn fib(n: int) -> int {
if n <= 1 { return n }
return fib(n - 1) + fib(n - 2)
}
// Run with: wyn bench fib.wyn --iterations 10
fib(35)