এলিস্পে হেরেডোক বা সমমানের মাল্টলাইন স্ট্রিং সিনট্যাক্স?


10

কমন-লিস্পে আমাদের লাইব্রেরি ক্লি- হেরডোক থাকে, ইমাস্যাক্সলিস্পে কি সমতুল্য থাকে?


ইমাস লিস্পের পাঠক ম্যাক্রোগুলি নেই, তাই আমার মাথার উপরের দিক থেকে আমি বলব না, নেই। তবে আপনি যদি এগুলির সাথে কী করতে যাচ্ছেন তাও যদি আপনি বিশদটি ব্যাখ্যা করেন তবে বিকল্প বিকল্প হতে পারে।
wvxvw

1
@wvxvw আমি মাল্টলাইনের সাথে উদ্ধৃত স্ট্রিংয়ের সাহায্যে আমার যা প্রয়োজন তা করতে পারি, কেবল অভ্যন্তরীণ উদ্ধৃতিগুলি থেকে রক্ষা পাওয়া একমাত্র জ্বালা।
ocodo

3
ওয়েল, স্ট্রিংগুলি ইলিস্পে মাল্টলাইন। উদ্ধৃতিগুলির ভিতরে উদ্ধৃতিগুলি হ্যান্ডেল করার একটি উপায় হ'ল এটির মধ্য দিয়ে (format "next word is quoted %S" "word")
wvxvw

@wvxvw আমি জানি না যে% এস তা করেছে, আমি এটি দিয়ে চেষ্টা করব। মনে হচ্ছে আদর্শ ধন্যবাদ! এটির উত্তর দিন, এবং আমি এটি গ্রহণ করব।
অক্টোডো

"% S" সিএল format ~sনির্দেশকের সাথে খুব মিল (যেমন prin1)। সুতরাং, এটি তার যুক্তিটি পাঠকের পক্ষে উপযোগী স্ট্রিংগুলির জন্য এমনভাবে প্রিন্ট করবে।
wvxvw

উত্তর:


6

সাধারণ ইমাস লিস্প স্ট্রিংগুলি মাল্টি-লাইন-সক্ষম। আপনি কেবল তাদের মধ্যে নতুন লাইন রাখতে পারেন।

এক নজরে দেখে cl-heredocমনে হচ্ছে আপনি যা খুঁজছেন তা "কাঁচা" স্ট্রিং। কিছুক্ষণ আগে এগুলি এলিস্পে যুক্ত করার প্রস্তাব ছিল, তবে দুর্ভাগ্যক্রমে এটি প্রত্যাখ্যান করা হয়েছিল। (আমি আশা করি পরিবর্তে এটি পুনরুত্থিত হতে পারে আশা করি)) এটিকে বাস্তবায়নের জন্য পাঠকের এক্সটেনসিবিলিটি বৈশিষ্ট্যও এলিস্পের নেই।


গতবার ব্যবহারকারীর দ্বারা সংজ্ঞায়িত পাঠক ম্যাক্রোগুলির বিষয়টি উপস্থিত হয়ে সবার পক্ষে ছিল বলে মনে হয়েছিল। সুতরাং আমি নিশ্চিত যে একমাত্র বাধা মানুষের প্রচেষ্টা।
মালাবরবা

2

আপনি যদি একটি init.el ফাইলের মাধ্যমে ইম্যাক্স কনফিগার করছেন তবে আপনি পরিবর্তে একটি init.org ব্যবহার করে বিবেচনা করতে পারেন ।

তারপরে আপনি নীচের মতো কনস্ট্রাক্ট ব্যবহার করতে পারেন:

#+NAME: arbitrary-text
#+begin_src xml
<some>
  <random src="xml">or whatever... includes syntax highlighting!</random>
</some>
#+end_src


#+begin_src emacs-lisp :var arb-text=arbitrary-text
(eval `(defun a-test ()
         (format "whoop there it is: %S" ,arb-text)))
#+end_src

আপনি যদি উত্পন্ন .elফাইলটিতে সন্ধান করেন তবে আপনি এমন কিছু দেখতে পাবেন:

(let ((arb-text "escaped text here..."))
  (eval `(defun a-test ()
           (format "whoop there it is: %S" ,arb-text))))

আপনি যে কোনও ক্রমে পাঠ্য এবং কোডটি রাখতে পারেন। আপনি অর্গ তালিকা, টেবিল ইত্যাদিতে নাম যুক্ত করতে পারেন

এটি যদি এমন কোনও লাইব্রেরির জন্য যেখানে আপনি সহযোগীদের 'साक्षিত প্রোগ্রামিং' ব্যবহার করতে বাধ্য করতে নাও পারেন তবে আপনি একটি .elফাইলের মধ্যে কোডের বেশিরভাগ অংশ রাখতে পারেন এবং .elঅর্গ ব্যবহার করে একটি সহায়ক ফাইল তৈরি করতে পারেন - উত্পন্ন কোডটি পুনর্বিবেশন নিয়ন্ত্রণে পরীক্ষা করতে পারেন।


3
সম্ভবত আমি কিছু মিস করছি, তবে আমি দেখতে পাই না যে init.org মাল্টি লাইনের স্ট্রিংগুলির সাথে কী করবে।
মালাব্বারবা

1
@ মালবারবা: টিএল; ডাঃ: আপনি যদি নিজের পছন্দটি org-মোডে লিখেন তবে আপনি হেরোডোকসের স্মরণ করিয়ে দেওয়ার মতো কিছু করতে পারেন; বেশিরভাগ - অন্যথায়, আপনি আপনার মাল্টি লাইন স্ট্রিং লিটারেল ভিতরে কিছু উপাদান অব্যাহতি পেয়েছেন ` and "`, iirc।
SamB

সমস্যাটি চারপাশের এটি একটি আকর্ষণীয় উপায়, তবে আমার মামলার জন্য এটির থেকে খানিকটা দূষিত।
ocodo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.