এস এক্সপ্রেশন পাঠযোগ্যতা


9

সংক্ষেপে এবং যারা এটি জানেন না তাদের জন্য, লিস্প ফাংশন / অপারেটর / কনস্ট্রাক্টসগুলি সমস্ত এই জাতীয়ভাবে বলা হয়:

(function arg0 arg1 ... argN)

সুতরাং একটি সি মত ভাষায় কি আপনি হিসাবে প্রকাশ করা হবে

if (a > b && foo(param))

লিস্প সেক্সপ লাইকের মতো রূপান্তরিত হয়

(if (and (> a b) (foo param)))

। জিনিসগুলি যেমন আরও বাস্তব / জটিল হয়ে ওঠে, তেমনি আমার জন্য তাদের সংশ্লিষ্ট এস-এক্সপ্রেশনও করুন।

আমি সচেতন যে এটি সম্ভবত একটি সাবজেক্টিভ প্রশ্ন, কিন্তু - অনেক লিস্প হ্যাকারদের পক্ষে কি এই সামান্য বিরক্তি একটি সর্বদা মোকাবেলা করতে হবে?

অথবা একজন খুব শীঘ্রই বা পরে এর (অভাবের) সিনট্যাক্সটিতে অভ্যস্ত হয়ে পড়েছেন?

যাই হোক না কেন, পাঠযোগ্যতার জন্য ব্রেকলাইনগুলি যুক্ত করা হচ্ছে (যে আপনি আপনার সি এর সমতুল্য, বেশিরভাগ বার যোগ করবেন না) বিশেষত দীর্ঘকালীন? অন্য কোনও পরামর্শ স্বাগত হবে।


1
আপনি কি ইমাসের মতো লিস্প-সচেতন পরিবেশে লিস্প ব্যবহার করার চেষ্টা করেছেন? আমি এটি অন্য কোনওভাবে স্পর্শ করব না।
ডেভিড থর্নলি

না আমি নেই, কোন ফর্মগুলিতে এটি আমার লিস্পের অভিজ্ঞতার উন্নতি করতে পারে?
vemv

সংক্ষিপ্ত ফাংশনগুলি লেখার বিষয়টিও খুব গুরুত্বপূর্ণ, যদিও আমি কেবল ক্লোজার দিয়ে কিছু খেলেছি।
কেভিন 21

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

উত্তর:


8

কীভাবে পার্স করবেন

if (a > b && foo(param)) {
  doSomething();
} else {
  doSomethingElse();
}

পার্স গাছটি সম্ভবত এরকম কিছু দেখাচ্ছে

if:
  condition:
    and:
      lt:
        left: a
        right: b
      function:
        name: foo
        param: param
  true-block:
    function:
      name: doSomething
  false-block:
    function:
      name: doSomethingElse

হুম ... চলুন এই গাছটিকে একটি তালিকাতে উপস্থাপন করুন

if(and(<(a, b), function(foo, param)), function(doSomething), function(doSomethingElse))

এই পার্স গাছের ফর্ম্যাটটি পরিচালনা করা বেশ সহজ, তবে আমার একটি সমস্যা আছে। আমি বিচ্ছেদকারীদের ঘৃণা করি। আমি টার্মিনেটর পছন্দ করি একই সাথে, আমি হোয়াইট স্পেসে ছিটানো পছন্দ করি।

if( and (<(a b) function(foo param)) function (doSomething) function ( doSomethingElse))

হুম ... অতিরিক্ত শ্বেত স্পেস কিছু নির্দিষ্ট জিনিস পার্স করা শক্ত করে তোলে ... সম্ভবত আমি কেবল একটি নিয়ম তৈরি করতে পারি যে গাছটি (মূল পাতা পাতার পাতা) হিসাবে উপস্থাপিত হয়েছে।

(if (and (< a b) (function foo param)) (function doSomething) (function doSomethineElse)

এখন আমার একটি পার্স গাছের সিরিয়ালাইজেশন হ'ল লিস্প (প্রয়োগের পুনরায় নামকরণ ফাংশন এবং এটি সম্ভবত চলমান)। যদি আমি প্রোগ্রামগুলি লিখি যেগুলি প্রোগ্রাম লিখতে পারে তবে এটি পার্স গাছগুলিকে ম্যানিপুলেট করা ভাল of

এটি সম্পূর্ণরূপে এস-এক্সপ্রেশনগুলি সম্পর্কে কীভাবে ঘটেছিল তা নয়, তবে এটি প্রাথমিকভাবে সনাক্ত করা হয়েছিল এবং এটি একটি বৈশিষ্ট্য যা লিস্প প্রোগ্রামাররা ব্যবহার করে। আমাদের প্রোগ্রামগুলি কিছুটা অর্থে প্রাক-পার্স করা হয়েছে এবং ফর্ম্যাটটির কারণে প্রোগ্রামগুলিকে ম্যানিপুলেট করার জন্য প্রোগ্রামগুলি লিখতে মোটামুটি সহজ। এজন্য সিন্টেক্সের অভাবকে মাঝে মাঝে একটি শক্তি হিসাবে বিবেচনা করা হয়।

তবে ডেভিড যেমন বলেছিলেন, একটি এস-এক্সপ্রেশন সচেতন সম্পাদক ব্যবহার করুন। এক্সএমএল-তে বন্ধ হওয়া বন্ধনীটির চেয়ে আপনি এস-এক্সপ্রেশনটিতে বন্ধ হয়ে যাওয়া বন্ধনীটির ট্র্যাক হারিয়ে যাওয়ার সম্ভাবনা বেশি ( </foo>কেবল বন্ধ হয় <foo>তবে ডান পেরেন কোনও এস-এক্সপ্রেশন বন্ধ করে)। র‌্যাকেটে, কিছু ভাল প্রকাশের শৈলীর সাথে কিছু অভিব্যক্তির জন্য বর্গাকার বন্ধনীর ব্যবহার বেশিরভাগ সমস্যার সমাধান করে।

লিস্প সংস্করণ:

(if (and (< a b) (foo param))
  (doSomething)
  (doSomethingElse))

এতোটা খারাপ না.


তালিকা প্রকাশকারীদের তুলনায় আরও বহুমুখী এবং শক্তিশালী + সন্দেহ নেই no ইমাকস (বা অন্য কি?) চেষ্টা করা লোভনীয় তবে সর্বশেষ সময় আমি চেষ্টা করেছিলাম আমাকে খুব ভয় পেয়েছে। যৌনতা সম্পর্কে সচেতনতা ঠিক কী এনেছে?
vemv

সাধারণ স্টাফ: তারা ঘনিষ্ঠ এবং উন্মুক্ত পেরেনগুলির উপর একটি হাইলাইট বাউন্স করে (বা সম্পূর্ণ এস-এক্সপ্রেশনকে আলাদাভাবে হাইলাইট করুন)। তাদের সুন্দর ইনডেন্টিং বিধি রয়েছে। ইমাক্সের অন্যান্য জিনিস রয়েছে তবে পঠনযোগ্যতার জন্য এগুলি সম্ভবত গুরুত্বপূর্ণ নয়। অন্যান্য এস-এক্সপ্রেশন সচেতন সম্পাদক রয়েছে। আপনার ইমাস দরকার নেই । যদি ইমাস আপনাকে ভয় দেখাতে পারে তবে টেক্সটমেট, উত্সাহ ইত্যাদির জন্য বান্ডিলগুলি চেষ্টা করে দেখুন একবার আপনার সম্পাদক পাঠযোগ্যতার সাথে সহায়তা করা শুরু করলে জিনিসগুলি কিছুটা সহজ হয়ে যায়। আমি র‍্যাকেটে বেশিরভাগ লিপি স্টাফ করি, যা স্ক্যার বন্ধনীগুলিকে কোথাও পেরেন ব্যবহার করতে দেয়। স্যুইচ আপ করতে সক্ষম হওয়া পঠনযোগ্যতার সহায়তা করে।
ccoakley

1
একদিকে যেমন নেস্টেড লেস, ডিফাইন ইত্যাদি ব্যবহার করুন use জিনিসটি ছোট ছোট টুকরো টুকরো করে। যদি আপনি কোনও অংশের জন্য কোনও ভাল নাম নিয়ে আসতে না পারেন, তবে এটি আপনার নকশা সম্পর্কে সতর্কতা হিসাবে মনে করুন। খুব ছোট-থেকে-নাম এবং খুব বড়-পড়ার মধ্যে ভারসাম্য সন্ধান করুন।
ccoakley

ওহ, শেষ পরামর্শটি হ'ল ... স্মরণীয় :) এই লেখার সাথে সাথে মহৎ চেষ্টা করে যাচ্ছি।
vemv

5

কি গুলি-মেপুঃ সত্যিই চমৎকার যে সময় অল্প সময়ের পর, আপনি তাদের আর দেখতে না হয়, এটি আপনার চোখ পাইথন মত কিন্তু কম্পিউটার এখনও গাছ সহজে হয়েছে।

  • সুতরাং ইন্ডেন্টেশন স্বয়ংক্রিয়, কোনও দ্বিপাক্ষিকতা নেই, যখন আপনি কোনও ব্লক শেষ করতে চান তখন আপনাকে দুবার ট্যাব টিপতে হবে না বা এর মতো কিছু হবে না।

  • আপনি যদি কিছু এলোমেলো কোড বাছাই করেন তবে আপনার প্রিয় সম্পাদক থেকে কেবল একটি কমান্ডের সাহায্যে পুরো জিনিস সহজেই যুক্ত হয়

  • আপনি আপনার কোডটি খুব সহজেই সহজেই নেভিগেট করতে পারেন, এস-এক্সপ্রেটের মধ্যে ঝাঁপিয়ে পড়তে পারেন, এগুলিকে স্যুপ পরিবর্তন করতে পারেন এবং একটি ভাল সম্পাদক দিয়ে

এছাড়াও, আপনি যে ডেটা ম্যানিপোল করছেন তা একই রকম যে আপনি যে কোডটি লিখছেন তা হ'ল আপনি নিজের ভাষা সঠিকভাবে পরিচালনা করতে একই ভাষা ব্যবহার করতে পারেন?

ঠিক আছে, আপনি এটি করতে পারেন, এটি ম্যাক্রোস, আপনি যে কোডটি লিখছেন তা অন্যের তালিকার মতো মূল্যায়ন করার আগে আপনি এটিকে পরিচালনা করেন, এজন্যই বলা হয় যে লিস্প একটি "প্রোগ্রামেবল প্রোগ্রামিং ভাষা"। আপনি কোড লিখেছেন যা আপনার জন্য আপনার কোড লিখবে।

এখানে একটি দুর্দান্ত নিবন্ধ দেওয়া হয়েছে যা লিপ্পের প্রকৃতি বর্ণনা করে এবং এক্সপিএমএল দেখলে লিস্প প্রোগ্রামাররা কেন গ্রিনড হয়েছিল।

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