1 language for everything
Ship CLI tools, web services, desktop apps, mobile apps, and games — from one language, on every platform.
$ curl -fsSL https://wynlang.com/install.sh | sh
> irm https://wynlang.com/install.ps1 | iex
struct User { name: string age: int fn greeting(self) -> string { return "Hi, ${self.name}!" } fn is_adult(self) -> int { return self.age >= 18 } } fn main() -> int { var users = [User{name: "Alice", age: 25}, User{name: "Bob", age: 17}] for u in users { println(u.greeting()) } return 0 }
fn main() -> int { // List comprehensions var squares = [x * x for x in 0..10] var evens = [x for x in 0..20 if x % 2 == 0] // Slice syntax var first3 = squares[0:3] // [0, 1, 4] var hello = "hello world"[0:5] // "hello" // Functional chains var data = [1, 2, 3, 4, 5] var result = data .filter(fn(x: int) -> int { return x > 2 }) .map(fn(x: int) -> int { return x * 10 }) println(result.join(", ")) // 30, 40, 50 return 0 }
trait Drawable { fn draw(self) -> string } struct Circle { r: int } struct Rect { w: int, h: int } impl Drawable for Circle { fn draw(self) -> string { return "circle" } } impl Drawable for Rect { fn draw(self) -> string { return "rect" } } // Dynamic dispatch — any Drawable fn render(shape: Drawable) { println(shape.draw()) } fn safe_div(a: int, b: int) -> ResultInt { if b == 0 { return Err("divide by zero") } return Ok(a / b) }
fn compute(n: int) -> int { var sum = 0 for i in 0..n { sum = sum + i } return sum } fn main() -> int { // Spawn 3 parallel tasks — 2μs each var f1 = spawn compute(100000) var f2 = spawn compute(200000) var f3 = spawn compute(300000) var total = await f1 + await f2 + await f3 // Channels for message passing var ch = Task.channel(10) Task.send(ch, total) println(Task.recv(ch).to_string()) return 0 }
// Numbers var answer = 42.to_string() // "42" var absolute = Math.abs(-5) // 5 var power = Math.pow(2, 8) // 256 var rounded = Math.round(3.7) // 4 // Strings var clean = " hello world " .trim().capitalize() // "Hello world" var shout = "hello" .upper().replace("L", "*").reverse() // "O**EH" // Arrow lambdas var nums = [1, 2, 3, 4, 5] var doubled = nums.map(fn(x) => x * 2) // [2,4,6,8,10] var big = nums.filter(fn(x) => x > 3) // [4,5] // Chain everything var result = "HELLO" .lower().capitalize().len() .to_string() // "5"
fn main() -> int { // Fetch + parse + store in 10 lines var body = Http.get("https://api.example.com/users") var doc = Json.parse(body) var name = Json.get(doc, "name") var token = Encoding.base64_encode("user:secret") var hash = Crypto.sha256(body) var db = Db.open("app.db") Db.exec(db, "INSERT INTO users(name) VALUES('${name}')") var csv = Csv.parse(File.read("data.csv")) println("Saved ${name}") return 0 }