এটা কীসের জন্য?


11

উদাহরণস্বরূপ আমাদের সংজ্ঞা রয়েছে -first:

(--first (funcall pred it) list))

স্বাভাবিকভাবেই "এটি" এর অর্থ গুগল করা বা ম্যানুয়ালটিতে সন্ধান করা খুব শক্ত।


4
অবিকল প্রশ্নটি জিজ্ঞাসা করা উচিত এবং এটি-এবং-এনাফোরিকের একটি যুক্তিসঙ্গত সাধারণ সমালোচনা। ইন এ গিয়ে Emacs , অন্তত (এটা হল "স্ব-দলিল সম্পাদক"), প্রতিটি ডক স্ট্রিং একটি anaphoric thingie এর পরিষ্কারভাবে এটি কল করা উচিত, এমনকি যদি যে কিছু যারা (এসআইসি) এটা সাথে পরিচিত করতে বাগাড়ম্বরপূর্ণ বলে মনে হয়, এবং এমনকি যদি এটা একটি ম্যানুয়াল ভাল ডকুমেন্টেড হয়। (জাস্ট এক মতামত।)
ড্রিউ

উত্তর:


10

আসলে এটি ম্যানুয়ালটিতে ঠিক আছে: https://github.com/magnars/dash.el#anaphoric-function

আপডেট: ম্যাক্রো পরিদর্শন এবং সমতলকরণ

আপনি যদি লম্পি ব্যবহার করেন তবে এর মাধ্যমে শুরু করুন:

;; anaphoric version
(--map (* it it) '(1 2 3 4))

এবং বিন্দুটি আগে (--map, আপনি xfকল করতে lispy-flattenএবং প্রাপ্ত করতে টিপতে পারেন :

;; anaphoric version
(mapcar (lambda (it) (* it it)) (quote (1 2 3 4)))

এই কোডটির সাথে এটি কিছুটা জটিল, যেহেতু ড্যাশ প্রতিনিধি এবং স্থগিতের জন্য খুব আগ্রহী:

(--reduce (max it acc) '(1 2 3 4))

পরে xfM:

(let ((list-value (quote (1 2 3 4))))
  (if list-value (--reduce-from (max it acc)
                                (car list-value)
                                (cdr list-value))
    (let (acc it)
      (max it acc))))

পরে fjfxfM:

(let ((list-value (quote (1 2 3 4))))
  (if list-value (let ((acc (car list-value)))
                   (--each (cdr list-value)
                     (setq acc (max it acc)))
                   acc)
    (let (acc it)
      (max it acc))))

পরে fjxfM:

(let ((list-value (quote (1 2 3 4))))
  (if list-value (let ((acc (car list-value)))
                   (let ((list (cdr list-value))
                         (it-index 0))
                     (while list (let ((it (car list)))
                                   (setq acc (max it acc)))
                            (setq it-index (1+ it-index))
                            (!cdr list)))
                   acc)
    (let (acc it)
      (max it acc))))

বলার অপেক্ষা রাখে না, itএটি অন্তর্নিহিত পুনরাবৃত্ত ভার এবং এটি অন্তর্নিহিত সঞ্চালক ভার accvar

এক পর্যায়ে, আমি ইমাসকে একটি সংক্ষিপ্ত ল্যাম্বডা প্যাচ যুক্ত করার চেষ্টা করেছি যা এই স্বরলিপিটি সক্ষম করবে, যা আমি মনে করি এনাফোরিক ম্যাক্রোগুলির চেয়ে সহজ:

(map #(* % %) '(1 2 3 4))
(cl-reduce #(max %1 %2) '(1 2 3 4))

যাইহোক, এটি ধরণের কোথাও যায় নি।


2
লসি ছাড়া তাদের জন্য, পিপি-ম্যাক্রোেক্সপ্যান্ড-লাস্ট-সেক্সপকেও কৌশলটি করা উচিত।
মালবারবা

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