ফাংশনের জন্য এটা-রূপান্তর
আমার একটি সমাধানে টিপটির জন্য লাইকোনিকে অনেক ধন্যবাদ ।
বড় হাতের অক্ষরের জন্য 3 এবং অন্য সমস্ত অক্ষরের জন্য 1 দিয়ে একটি স্ট্রিং যোগ করতে, বলতে একটি ফাংশন বিবেচনা করুন। তাই:
let counter input = Seq.sumBy (fun x -> if Char.IsUpper x then 3 else 1) input
এটা-রূপান্তর দ্বারা এটি আবার লিখিত হতে পারে:
let counter = Seq.sumBy (fun x -> if Char.IsUpper x then 3 else 1)
এবং পূর্বের মতো একইভাবে ডাকা হয়েছিল:
counter "Hello world!" |> printfn "%i"
ফাংশন ফরোয়ার্ড-কমপোজেশন অপারেটর >>
এখন ধরা যাক আমাদের আসল চ্যালেঞ্জটি হ'ল বড় হাতের অক্ষরের জন্য 3 এবং লোয়ার-কেস অক্ষরের জন্য 1 দিয়ে একটি স্ট্রিং যোগ করে অন্য সমস্ত অক্ষর বাদ দেওয়া হয়।
আমরা এটি লিখতে পারি:
let counter input = Seq.filter Char.IsLetter input |> Seq.sumBy (fun x -> if Char.IsUpper x then 3 else 1)
>>
দুটি ফাংশন ( Seq.filter
এবং Seq.sumBy
) একসাথে শৃঙ্খলে রাখতে আমরা ফরোয়ার্ড-কমপোজেশন অপারেটর ( ) ব্যবহার করতে পারি । এটা-রূপান্তরের সাথে ফাংশন সংজ্ঞাটি হয়ে উঠবে:
let counter = Seq.filter Char.IsLetter >> Seq.sumBy (fun x -> if Char.IsUpper x then 3 else 1)
ক্রিস স্মিথ >>
তার এমএসডিএন ব্লগে অপারেটরটিতে দুর্দান্ত রচনা আপ করেছিলেন ।