নিম্নলিখিত টিপস র্যাকেটের জন্য :
ডিফল্ট আর্গুমেন্ট
প্রায়শই ব্যবহৃত হয় দীর্ঘ ফাংশন নামের জন্য উপকরণ তৈরি করার জন্য বিশেষত দরকারী।
ধরুন গল্ফ আপনাকে এমন একটি ফাংশন লিখতে দেয় যা আর্গুমেন্ট গ্রাস করে এবং ধরে নিই যে আপনাকে reverse
প্রচুর পরিমাণে ব্যবহার করা দরকার । আপনি এরকম কিছু দিয়ে শুরু করবেন:
(λ(x) ... reverse ... reverse ... reverse ...
পরিবর্তে আপনি একটি সংক্ষিপ্ত নাম সহ একটি অতিরিক্ত যুক্তি গ্রহণ করতে পারেন reverse
এবং এর ডিফল্ট মান সেট করতে পারেন reverse
:
(λ(x[r reverse]) ... r ... r ... r ...
তদুপরি, আপনার যদি কোনও সহায়ক ফাংশন থাকে যা আপনি একই জায়গায় কিছু যুক্তি দিয়ে অনেক জায়গায় ব্যবহার করেন it's প্রয়োজন হিসাবে ফাংশনে আর্গুমেন্টগুলি পুনরায় অর্ডার করতে মনে রাখবেন, যাতে আপনি যথাসম্ভব ডিফল্ট আর্গুমেন্টগুলি ব্যবহার করতে পারেন এবং একাধিক কলসাইট থেকে আর্গুমেন্টগুলি সরিয়ে ফেলতে পারেন।
match
এটি একটি ছোট পোস্টে সংক্ষিপ্ত করে তুলতে আরও কঠিন, সুতরাং এটির জন্য র্যাকেট ডক্সে পড়ুন । সংক্ষেপে, match
আপনাকে একটি তালিকা থেকে একটি নির্দিষ্ট ক্রমে উপাদানগুলির উপাদান এবং ক্রমগুলি বের করার অনুমতি দেয় এবং চতুর্ভুজ বাক্য গঠন আপনাকে বিভক্ত তালিকাটি আবার একসাথে সেলাই করতে দেয়:
(match (range 10)
[`(,xs ... 3 ,ys ... 6 ,zs ...)
`(,@(map f xs) 3 ,@(map f ys) 6 ,@(map f sz))]
...
এটি আপনাকে নিয়মিত প্রকাশের সাথে কাজ করার এবং পরে ফলাফলকারী গ্রুপগুলিতে অতিরিক্ত গণনা করার একটি সহজ উপায়ও দেয়,
নামে let
নামের সিনট্যাক্সটি এখানে দেখুন ।let proc-id ...
এটি আপনাকে পুনরাবৃত্ত ফাংশনগুলি লেখার অনুমতি দেয় যা তত্ক্ষণাত ডাকা হয় define
বা আসলে ফাংশনটি সংজ্ঞায়িত করার পরে কল না করে বলা হয়।
কিছুটা এইরকম:
(define (fib i)
(if (< i 2) i
(+ (fib (- i 1)) (fib (- i 2)))))
(fib 10)
সংক্ষিপ্ত করা যেতে পারে:
(let fib {[i 10]}
(if (< i 2) i
(+ (fib (- i 1)) (fib (- i 2)))))
এই শেষ নিরীহ, কিন্তু আমি যে কোন জায়গায় এতদূর এই সামান্য কৌতুক ব্যবহার করতে পারবেন না করা হয়:
(apply map list matrix)
একটি TRANSPOSE লাগে matrix
, যেখানে matrix
তালিকার কিছু আয়তক্ষেত্রাকার তালিকা, মত '((1 2 3) (a b c))
।
যদি এটি কার্যকর হিসাবে প্রমাণিত হয় তবে আমাকে জানান।