Cello is a GNU99 C library which brings higher level programming to C.
Ссылки на примеры:
Пример программы:
На что только люди не пойдут, чтоб на С++ не писать.
Interfaces allow for structured design;
Duck Typing allows for generic functions;
Exceptions control error handling;
Constructors/Destructors aid memory management;
Ссылки на примеры:
Пример программы:
#include "Cello.h" int main(int argc, char** argv) { /* Tables require "Eq" and "Hash" on key type */ var prices = new(Table, String, Int); put(prices, $(String, "Apple"), $(Int, 12)); put(prices, $(String, "Banana"), $(Int, 6)); put(prices, $(String, "Pear"), $(Int, 55)); /* Tables also supports iteration */ foreach (key in prices) { var price = get(prices, key); print("Price of %$ is %$\n", key, price); } /* "with" automatically closes file at end of scope. */ with (file in open($(File, NULL), "prices.bin", "wb"))) { /* First class function object */ lambda(write_pair, args) { /* Run time type-checking with "cast" */ var key = cast(at(args, 0), String); var val = cast(get(prices, key), Int); try { print_to(file, 0, "%$ :: %$\n", key, val); } catch (e in IOError) { println("Could not write to file - got %$", e) } return None; }; /* Higher order functions */ map(prices, write_pair); } delete(prices); }
На что только люди не пойдут, чтоб на С++ не писать.