ইনপুটটিতে হাসেল ত্রুটি পার্স ত্রুটি `= '


111

আমি হাস্কেলের কাছে নতুন এবং শুরু ghciকরার পরে আমি চেষ্টা করেছি:

f x = 2 * x

এবং আমি পেয়েছি:

<interactive>:1:4: parse error on input `='

যা আমি বুঝতে পারি না

আশ্চর্যের বিষয়, এটি আগে ভাল কাজ করেছে। আমি মনে করি যে আমি হাসকলকে ভুল কনফিগার করা করেছি। Ghc6 পুনরায় ইনস্টল করা সমস্যার সমাধান করে না।

তথ্যের জন্য, আমি উবুন্টু 10.4 ব্যবহার করি এবং জিএইচসি 6 এর সংস্করণটি 6.12.1-12 হয়

উত্তর:


160

জিএইচসিআই 7.x বা এর নীচে, আপনাকে এতে letজিনিসগুলি সংজ্ঞায়িত করতে প্রয়োজন ।

Prelude> let f x = x * 2
Prelude> f 4
8

জিএইচসি 8.0.1 থেকে শুরু করে, শীর্ষ স্তরের বাইন্ডিংগুলি জিএইচসিআইতে সমর্থিত , সুতরাং ওপির কোডটি পরিবর্তন ছাড়াই কাজ করবে।

GHCi, version 8.0.1.20161213: http://www.haskell.org/ghc/  :? for help
Prelude> f x = x * 2
Prelude> f 4
8

15
ধন্যবাদ। "রিয়েল ওয়ার্ল্ড হ্যাশেল" (কমপক্ষে আমার কাছে থাকা সংস্করণটি) letএর উদাহরণগুলিতে নেই
মাইকা

43
"শিখুন আপনি হাস্কেল" এটিকে মোটেই উল্লেখ করে না।
বাকুরিউ

2
@Bakuriu LYAH নেই এখন উল্লেখ let। কিন্তু একটি ফলোআপ। ইন LYAHআমি পড়তে addThree :: Int -> Int -> Int -> Int(সম্পর্কে newline) addThree x y z = x + y + zকিন্তু শুধুমাত্র দ্বিতীয় এক রান GHCiদিয়ে let। কেন?
isomorphismes

9
@ বাকুরিউ হ্যাঁ তবে লেখক আপনাকে বাহ্যিক ফাইলে আপনার সংজ্ঞা লিখতে এবং এটি জিএইচসিআই-র মধ্যে লোড করতে বলেছেন, এগুলি সরাসরি জিএইচসিআইতে না লিখতে। এবং প্রাক্তন পুরোপুরি কাজ করে।
সুপারজ্যাম্প

এই টিউটোরিয়ালটি তখন সাধারণ ভুল: সমুদ্র.উপেন.ইডু / iscis194 / lectures / 01-intro.html । তবুও এটি হ্যাশেল ওয়েবসাইটে প্রস্তাবিত প্রথম টিউটোরিয়াল!
ক্যাম্মিল

51

আপনি যখন হাস্কেল উত্স ফাইলটিতে টাইপ করেন,

f x = 2 * x

সঠিক.

আপনি যখন সরাসরি গিগিতে টাইপ letকরেন , আপনাকে লাইনের শুরুতে টাইপ করতে হবে :

let f x = 2 * x

12
এটি জিএইচসিআইতে কাজ করে না কেন? সিনট্যাক্সে কেন পার্থক্য রয়েছে?
বীট

1
@ বিট জিএইচসিআই ডিফল্টরূপে প্রকাশগুলি মূল্যায়ন করার চেষ্টা করে, বিবৃতিগুলি বিশ্লেষণ করে নয়, যেখানে ফাইল ফর্ম্যাটটি তার বিপরীত। এ কারণেই, বিবৃতি দেওয়ার জন্য (যেমন: ভেরিয়েবলগুলি সেট করুন, ফাংশনগুলি সংজ্ঞায়িত করা ইত্যাদি) আপনাকে ঘোষণা করতে হবে যে আপনি ব্যবহার করছেন let। GHCi কে একটি বড় let ... in ...বিবৃতি হিসাবে ভাবেন ।
এজেফারমার

20

Ghci ব্যবহারের জন্য থাম্বের একটি ভাল নিয়ম হ'ল যে কোনও কোড আপনি প্রবেশ করিয়েছেন তা ডু-ব্লক শব্দার্থবিজ্ঞানের সাথে সঙ্গতিপূর্ণ হওয়া উচিত; এটি হ'ল আপনি সিনথেটিকভাবে ধরে নিতে পারেন যে আপনি আইও মোনাডের মধ্যে প্রোগ্রামিং করছেন (যদি এটি নতুন পরিভাষা হয় তবে চিন্তা করবেন না! আমি এই টিউটোরিয়ালটির মাধ্যমে পড়ার খুব প্রস্তাব দিই )।

এই উত্তরটি এই দৃষ্টান্তটির উদাহরণ দিয়ে একটি উদাহরণ দেয় এবং এটি IO এবং gci এর প্রকৃতি সম্পর্কে আরও কার্যকরী অন্তর্দৃষ্টি সরবরাহ করতে পারে।


26
এই উত্তরটি কোনও শিক্ষানবিসের জন্য অকেজো। তিনি এগিয়ে যাওয়ার জন্য একটি সহজ ক্রিয়াযোগ্য ইঙ্গিত খুঁজছেন, উন্নত বিষয় নয়। আপনি একটি বাচ্চাকে বহুগুণীয় পণ্যগুলি গুণক টেবিল শিখছেন না - এটি আপনি কতটা জানেন তা দেখায় না, এটি আপনাকে জানায় কীভাবে কীভাবে ভাগ করতে হয় তা জানেন না shows
বিটি কে

3
@ বিটিকে: প্রত্যেককে কোনও না কোনও সময়ে শিক্ষানবিস হওয়া বন্ধ করতে হবে। আমি গতকাল হাস্কেলকে শিখতে শুরু করেছি এবং আমি আত্মবিশ্বাসী যে অল্প সময়ের মধ্যেই আমি রায়জ যা বলেছি তা সবই বুঝতে পারব।
ভিয়েট্টি ফুভান

10
এটি আমার প্রথম দিন হাস্কেল শেখা, এবং কেন আমাকে ব্যবহার করতে হবে তা বোঝার জন্য আমি এই উত্তরটি খুব সহায়ক বলে খুঁজে পেয়েছি let; আমি "wtf এর মতো ছিলাম, আমাকে কেন ব্যবহার করতে হবে let" এবং তারপরে আমি এটি পড়েছি এবং আলোকিত হয়েছিলাম।
ব্রায়ান টিঙ্গল

4

GHC 8.0.1 এ শুরু করা এটি আর ত্রুটি তৈরি করে না।

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