আমরা এখন ক্লোজারে একটি ফাংশন লিখবো যেটি একটি সঙ্খ্যার স্কয়ার রুট বা বর্গমূল বের করবে।
আমার লেখা পুরো ফাংশনটি এরকম:
(defn sqrt
([x] (sqrt x 0.001))
([x precision]
(letfn [(abs [x]
(if (< x 0)
(- x)
x))
(square [x]
(* x x))
(average [& args]
(/ (apply + args) (count args)))
(good-enough? [guess]
(< (abs (- (square guess) x)) precision))
(improve [guess]
(average guess (/ x guess)))]
(loop [guess 1.0]
(if (good-enough? guess)
guess
(recur (improve guess)))))))
কখনো কখনো ক্লোজারে আপনাকে কোন একটি লিস্টকে ভেক্টরে রূপ দিতে হতে পারে। আমরা এখন সবচেয়ে দ্রুত উপয়াটি বের করতে চেষ্টা করবো।
প্রথমেই সবচেয়ে জেনেরিক উপায় অর্থাৎ into ব্যবহার করে দেখি:
boot.user> (time (into [] (range 0 101)))
"Elapsed time: 1.235923 msecs"
আমরা দেখতে পাচ্ছি into ব্যবহার করে আমাদের 1.235923 মিলিসেকেন্ড সময় লেগেছে।
মূল: এ্যালান জে. পেরলিস
এই বইটি উৎসর্গকৃত, সম্মান ও প্রশংসার সাথে, সেই আত্মার (প্রোগ্রাম?) প্রতি যে কম্পিউটারের মধ্যে বসবাস করে।
আমার মনে হয়, আমরা কম্পিউটার বিজ্ঞানে কম্পিউটিঙের মধ্যে যে আনন্দ বজায় রাখি তার গুরুত্ব অনন্য। শুরুতে, এটা ছিল প্রচণ্ড মজার। অবশ্য পয়সা দেওয়া ক্রেতারা হরহামেশাই বিপদে পড়তেন এবং কিছুদিন পর, আমরা তাদের অভিযোগে গুরুত্ব দিতে শুরু করলাম। আমাদের মনে হল, আমরাই দায়ী যন্ত্রগুলোর নির্ভুল ও সফল ব্যবহারের জন্য। আমার কিন্তু তা মনে হয়না। আমার মনে হয়, আমাদের আসল সফলতা তাদের ক্ষমতা বাড়ানোয়, তাদের নতুন দিকে চালিত করায়, এবং মজাটা বজায় রাখাতে। আমি আশা করি কম্পিউটার বিজ্ঞানের শাখা থেকে মজা করার বোধ উবে যাবে না। সবচেয়ে বেশি, আমি আশা করি আমরা ধর্মপ্রচারক (আঁতেল?)হবো না। আমরা বাইবেল বিক্রেতা নই, দুনিয়ায় তা ঢের আছে। আজ আপনি কম্পিউটার সম্পর্কে যা জানেন, একসময় আরো অনেকে জানবে। এটা মনে করবেন না যে কম্পিটারের ভবিষ্যত সফলতার চাবিকাঠি একমাত্র আপনার হাতেই। আপনার হাতে যা আছে বলে আমি মনে করি ও আশা করি, তা হলো মেধা: সেই ক্ষমতা, যার মাধ্যমে আপনি যন্ত্রকে দেখেছেন ঢের বেশি তাকে প্রথম যখন দেখেছিলেন তার থেকে, বুঝেছেন একে আরো সমৃদ্ধ করতে পারবেন।
—এ্যালান জে. পেরলিস (এপ্রিল ১, ১৯২২ – ফেব্রুয়ারি ৭, ১৯৯০)