Estağfirullah bunlar güzel fikirler ve de başlamışsın bile...:)
Öncelikle eline sağlık çünkü RhS ile halihazırda olan emeklerini sanırım çok fazla uğraştırmadan bir 'base consol'a uyarladık bile. Ben elimden geldiğince app.d kısmını geliştirmeye çalışacağım. Bir yandan da diğer arkadaşlarımızdan gelen fikirler sayesinde, emin adımlar ile ilerleyebiliriz diye düşünüyorum.
Her ne kadar farklı notasyon olsa da Schema'daki gibi sınırsıza yakın matematiksel işlemler insanı cezbediyor ama bence önceliğimiz D olmalı. Amaç insanlara, D'yi uzaktan da olsa sevdirebilmek. Düşünsene bunun bir web uygulaması olduğunu ve insanlar std.algorithm'deki bir kaç olayı deneyebildiklerini.
Olay zor değil zannedersem? Yani kullanıcı bir veri (sayı da olabilir, tekrar eden bir metin dizisi de) beliryecek ve bunu D komutları ile tek satırda sunup sonucunu öğrenecek. Ama önce basitten başlayalım. Mesela, Fibonacci serisine ne dersin:
recurrence!("a[n-1] + a[n-2]")(1, 1).take(10).writeln;
// printout: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Hatta daha da ileri gidip (bilmem olur mu?) konsolda tek satırla kendimizi kısıtlamayıp şöyle bir döngü oluşturabilir miydik?
auto fibs = recurrence!("a[n-1] + a[n-2]")(1, 1);
foreach(i; 0..10) {
fibs.popFront();
fibs.front().writeln("\t=> fib(", i,")");
}
Bu sadece bir alternatifdi, yoksa take() kullanmak daha akıllıca ki bunun gibi map, reduce gibi bir sürü güzel örnek var. Haaa reduce()'a da bir örnek verelim. Bu da tek satır, kesin ve güzel...:)
reduce!((a,b) => a + b)(0, iota(1,10)).writeln;
// printout: 45
Özetle, std.algorithm'deki olaylar bizim gönlümüzü gözümüzü açar! Sanırım asıl mesele, komutları kütüphane ile ilişkilendirmekten çok parametreleri doğru bir şekilde lexer'dan geçirmek. Bu konuda da sen ustasın güzel kardeşim benim...: :cool:
Sevgiler, saygılar...
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]