ব্যবহার ও উদাহরণ

Bnlang-এর সংক্ষিপ্ত পরিচয় — প্রতিটি স্নিপেট সরাসরি bnl <file>.bnl দিয়ে চলে।

হ্যালো, ওয়ার্ল্ড

print("Hello, World!");

চালান:

bnl hello.bnl

ভ্যারিয়েবল এবং বেসিক টাইপ

Bnlang-এ একটিই ডিক্লেয়ারেশন কীওয়ার্ড: var। মান ডায়নামিকালি টাইপড কিন্তু পূর্বানুমানযোগ্য।

var name        = "আলিস";
var age         = 25;
var is_admin    = true;
var nothing     = null;
var items       = [1, 2, 3];
var user        = { id: 1, name: "আলিস" };

print(name, age, is_admin);
print("items:", items.length);
print("user id:", user.id);

কন্ট্রোল ফ্লো

var score = 85;

if (score >= 80) {
    print("গ্রেড: A+");
} else if (score >= 70) {
    print("গ্রেড: A");
} else {
    print("গ্রেড: A-এর নিচে");
}

লুপ

// for ... of — একটি লিস্ট ইটারেট
for (var n of [1, 2, 3, 4, 5]) {
    print(n);
}

// সাধারণ while
var i = 0;
while (i < 3) {
    print("tick", i);
    i = i + 1;
}

C-স্টাইলের for (i = 0; i < n; i++) লুপ নেই, ++/-- নেই। একটি list-এর উপর for ... of, অথবা counter-চালিত loop-এর জন্য while ব্যবহার করুন। দু'টোতেই breakcontinue কাজ করে।

ফাংশন

function greet(name) {
    return "হ্যালো, " + name + "!";
}

print(greet("আলিস"));

ফাংশন ফিক্সড-অ্যারিটি — কোনো ডিফল্ট নেই, কোনো ওভারলোড নেই, কোনো varargs নেই। ভিন্ন শেপ দরকার হলে আলাদা নামের ফাংশনে ভাগ করুন।

স্ট্যান্ডার্ড লাইব্রেরি ইমপোর্ট

import "io"   as io;
import "path" as path;

var text = io.read_file("notes.txt");
print("read", text.byte_length, "bytes from", path.basename("notes.txt"));

Async (কলব্যাক-স্টাইল)

কোনো async/await কীওয়ার্ড নেই। Async I/O একটি ফাইনাল কলব্যাক নেয় যা কাজ শেষ হলে ফায়ার হয়:

import "io" as io;

io.read_file_async("notes.txt", function (err, data) {
    if (err != null) {
        print("read failed:", err);
        return;
    }
    print("got", data.byte_length, "bytes");
});

print("scheduled");

একাধিক async স্টেপ কম্পোজ করতে async লাইব্রেরি ব্যবহার করুন:

import "async" as async;

async.parallel([
    function (cb) { io.read_file_async("a.txt", cb); },
    function (cb) { io.read_file_async("b.txt", cb); }
], function (err, results) {
    print("got", results.length, "files");
});

এরর হ্যান্ডলিং

function divide(a, b) {
    if (b == 0) { throw "divide by zero"; }
    return a / b;
}

try {
    print(divide(10, 0));
} catch (e) {
    print("caught:", e);
} finally {
    print("done");
}

একটি ছোট ওয়েব সার্ভার

import "web" as web;

var app = web.app();
app.get("/", function (req) { return "Hello from Bnlang!"; });
app.get("/echo/:name", function (req) {
    return "Hi, " + req.params.name;
});
app.listen({ port: 3000 });

এটাই হলো ভাষা এন্ড-টু-এন্ড। মডিউল রেফারেন্স এবং সিনট্যাক্স বিস্তারিতের জন্য বাকি ডক্স ও কীওয়ার্ড পেজ ঘুরে দেখুন।