ক্লোজারের কি ধারাবাহিকতা / কর্টিন / ইত্যাদি রয়েছে?


20

আমি পাইথন দিয়ে প্রোগ্রামিং শুরু করেছিলাম এবং আমি কর্টিনস এবং ক্লোজারগুলির মত ধারণাগুলি দ্বারা সত্যিই বিভ্রান্ত হয়ে পড়েছিলাম।

এখন আমি মনে করি আমি তাদের কিছু পৃষ্ঠের স্তরে জানি, কিন্তু আমি কখনই সেই "আলোকিতকরণ" মুহুর্তটি অনুভব করি নি, তাই আমি ক্লোজার শিখতে বেছে নিই। আমি স্টুয়ার্ট হ্যালোয়েয়ের বইটি কিনেছিলাম এবং এটি ভাল, তবে আমি যখন সূচকের দিকে তাকালাম তখন কোনও কর্টিন বা ধারাবাহিকতার মতো শব্দ ছিল না। আমি তাদের googled, কিন্তু সেখানে কিছুই নেই।

সুতরাং, আমার প্রশ্নটি হ'ল:

ক্লোজারের কোনও স্ট্যাক ওভারফ্লো ছাড়াই পিং-পং করার মতো কাজগুলি করার জন্য কি ধারাবাহিকতা বা করোটিন রয়েছে?

পাইথনের উদাহরণ (যদিও স্ট্যান্ডার্ড পাইথন এই প্রতিসাম্যীয় করোটিনের সম্পূর্ণ বৈশিষ্ট্যযুক্ত সংস্করণ সমর্থন করে না):

def ping():
  while 1:
   print "ping"
   function to switching to pong

def pong():
  while 1:
   function to switching to ping
   print "pong"

উত্তর:


20

ক্লোজুরে কল / সিসি নেই তবে আপনি যেভাবেই অনির্দিষ্টকেন্দ্রিক ধারাবাহিকতা চান না।

আমরা call/ccঅন্য সকলকে গ্রন্থাগারে নেটিভ করে রিজিলিয়েট করার জন্য বিশিষ্ট নিয়ন্ত্রণ অপারেশন হিসাবে একটি মূল ভাষা বৈশিষ্ট্য হিসাবে তর্ক করি । আদিমটি call/ccএকটি খারাপ বিমূর্ততা - নীচে দেখানো 'খারাপ' এর বিভিন্ন অর্থ - এবং পুরো প্রোগ্রামটির ধারাবাহিকতার জন্য এটি ক্যাপচারটি কার্যত কার্যকর নয়। পুরো ধারাবাহিকতার দক্ষতার সাথে ক্যাপচার করার জন্য কঠোর পরিশ্রমের একমাত্র পুরষ্কার হ'ল সম্পূর্ণ ধারাবাহিকতা ক্যাপচারের পক্ষে আরও কঠোর পরিশ্রম। ব্যবহারকারী এবং বাস্তবায়নকারী উভয়ই সুচিন্তিত ইন্টারঅ্যাকশনগুলির সাথে সাধারণতার বিভিন্ন ডিগ্রির ভাল-নির্বাচিত নিয়ন্ত্রণ আদিম সেটগুলির সাথে আরও ভালভাবে পরিবেশন করা হয় ...

... call/ccঅন্য সমস্ত নিয়ন্ত্রণ সুবিধা কার্যকর করা উচিত সে ক্ষেত্রে একটি মূল নিয়ন্ত্রণ বৈশিষ্ট্য হিসাবে অফার করা একটি খারাপ ধারণা তৈরি করে। পারফরম্যান্স, মেমরি এবং রিসোর্স লিক, বাস্তবায়নের সহজতা, ব্যবহারের সহজতা, যুক্তি স্বাচ্ছন্দ্য সবই বিরুদ্ধে যুক্তি দেয় call/cc। আদিম হিসাবে বাস্তবায়নের জন্য যদি সত্যিই একটি বিশিষ্ট নিয়ন্ত্রণ বৈশিষ্ট্য উপস্থিত থাকে, অন্যরা লাইব্রেরিতে প্রবেশ করে তবে তা হয় না call/cc

ডেভিড নোলেন ক্লোজুরের জন্য একটি সীমাবদ্ধ ধারাবাহিকতা গ্রন্থাগার লিখেছিলেন । চেষ্টা কর!

delimc

Clojure 1.4.0 (এবং 1.3.0) এর জন্য একটি সীমিত ধারাবাহিকতা গ্রন্থাগার। স্লাভা আখমেচেটের ( http://defmacro.org ) দ্বারা ক্ল-কনট-এর উপর ভিত্তি করে অংশগুলি ...


2

যদিও ক্লোজুরের প্রথম শ্রেণীর ধারাবাহিকতা বা কোর বৈশিষ্ট্যগুলি অন্তর্নির্মিত কোনও মূল বৈশিষ্ট্য হিসাবে নেই, তবে আপনার নিজের প্রয়োগ করা সম্ভব।

উদাহরণস্বরূপ, কোর.স্যানসিচ হ'ল ক্লোজার লাইব্রেরি যা সিএসপি (সমকালীন অনুক্রমিক প্রক্রিয়াগুলি) মডেলটি প্রয়োগ করে imple goকোডটি রাষ্ট্রের মেশিনে রূপান্তর করতে এটি ম্যাক্রো ব্যবহার করে । প্রতি সেপ্টে হুবহু কর্টিন না থাকাকালীন একই প্যাটার্নগুলি প্রয়োগ করতে এটি ব্যবহার করা যেতে পারে।

রয়েছে pulley.cps একটি ম্যাক্রো কম্পাইলার আমি রচনা করেছি যে রূপান্তরগুলির (মাধ্যমে cps/ cps-fnম্যাক্রো) Clojure কোড ধারাবাহিকতা-ক্ষণস্থায়ী শৈলী মধ্যে সরাসরি শৈলী লিখিত। আমার জ্ঞানের সেরা, এটি সর্বাধিক সম্পূর্ণ ধারাবাহিকতা-থিমযুক্ত ক্লোজার প্রোগ্রাম। এটি গতিশীল বাঁধাই, ব্যতিক্রমগুলি, দেশীয় এবং রুপান্তরিত কোডের মধ্যে পিছনে ফোন করে সমর্থন করে (যদিও ধারাবাহিকতাটি প্রাসঙ্গিকভাবে ধরে রাখা হয় না)। এই মুহুর্তে, কেবলমাত্র গর্ভপাতমূলক ধারাবাহিকতাগুলি (যেমন, প্রচলিত call-cc) সমর্থিত তবে ভবিষ্যতে সীমানাতিরিক্ত ধারাবাহিকতা বাস্তবায়নের পরিকল্পনা আমার আছে।

যদিও পুললি সিপিএস সরাসরি প্রতি সেজে কর্টিন সরবরাহ করে না, call-ccএটি আপনার নিজের প্রয়োগ করার জন্য তুলনামূলকভাবে সোজা-এগিয়ে রয়েছে। আসলে, উদাহরণগুলির মধ্যে একটি হ'ল সমবায় মাল্টিটাস্কিংয়ের সহজ বাস্তবায়ন । এটি আরও সিএসপি উদাহরণে নির্মিত হয়েছে । এখানে পিং-পং উদাহরণ রয়েছে, তবে এটি কর্টিনগুলির চেয়ে টেল-কল অপ্টিমাইজেশনের আরও উদাহরণ।

অবশ্যই, পুরো প্রোগ্রামটিতে প্রয়োগ করার সময় এই ধরণের রূপান্তরগুলি সবচেয়ে কার্যকর। দুর্ভাগ্যক্রমে, একাই ম্যাক্রোগুলির দ্বারা এটি সম্ভব নয়, যা স্থানীয়ীকৃত। তবুও, এমনকি স্থানীয়ীকৃত রূপান্তরগুলি খুব কার্যকর হতে পারে।


1

ক্লোজারের কোনও স্ট্যাক ওভারফ্লো ছাড়াই পিং-পং করার মতো কাজগুলি করার জন্য কি ধারাবাহিকতা বা করোটিন রয়েছে?

পুরানো প্রশ্ন, তাই আমি এই মুহূর্তে এই বৈশিষ্ট্যটি উপলব্ধ ছিল কিনা তাও নিশ্চিত নই, তবে যে কোনওরকম "পিং-পং" কার্যকারিতা বাস্তবায়ন করতে চায়, ট্রাম্পোলিন পরীক্ষা করে দেখুন !

আমি এখানে ক্লোজেউরে দক্ষ ধারাবাহিকতা-পাসিং স্টাইল সম্পর্কে আমার প্রশ্নের উত্তর হিসাবে এটি সন্ধান করেছি, এখানে: /programming/50952443/continuation-passing-style-does-not-seem-to-make-a -পরিচয়-ইন-ক্লোজার / 50955276 # 50955276 এবং আমি মনে করি এটি কেবল কাজ। আমি এটি সম্পর্কে কিছুক্ষণ আগে শুনেছি, কিন্তু পুরোপুরি তদন্ত কখনও। আরও আমাকে বোকা। অন্যান্য প্রস্তাবিত অনেকগুলির সমাধানের বিপরীতে, এটি কেবল কাজ করে

====== পিএস অনলাইনে টিউটোরিয়াল তথ্য লোড,] এখানে কয়েকটি দরকারী বলে মনে করি


1
হয়তো linkify trampoline ডকুমেন্টেশন নির্দেশ কিভাবে?
esoterik
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.