2011-12-29 7 views
8

मैं Natural Language Processing for Working Programmers पुस्तक के माध्यम से जा रहा हूं। पुस्तक हास्केल का उपयोग करती है, जिसके साथ मुझे अधिक अनुभव नहीं है। नीचे दिए गए कोड GHCi में कोई त्रुटिहास्केल: "एक 'डू' निर्माण में अंतिम बयान एक अभिव्यक्ति होना चाहिए"

:{ 
do 
    l <- [0..9] 
    ps <- (\x -> [x-1, x+2]) l 
    return ps 
:} 

यह त्रुटि संदेश दिया

The last statement in a 'do' construct must be an expression

सभी जवाब मैं का सामना करना पड़ा यह एक खरोज त्रुटि है सुझाव है कि लगता है, लेकिन जहाँ तक फेंकता मैं बता सकता हूं कि इंडेंटेशन सही लगता है। कोई अंदाजा कि समस्या क्या हो सकती है?

+0

ghci का कौन सा संस्करण आप उपयोग कर रहे हैं? विंडोज/ओएसएक्स/उबंटू/फेडोरा/... पर? उबंटू 10.04 पर – dave4420

+0

6.12.1। क्या यह समस्या हो सकती है? –

उत्तर

4

मैंने आपका कोड ghci 7.0.3 में टाइप किया और मुझे कोई त्रुटि नहीं मिली।

Prelude> :{ 
Prelude| do 
Prelude| l <- [0..9] 
Prelude| ps <- (\x -> [x-1, x+2]) l 
Prelude| return ps 
Prelude| :} 
[-1,2,0,3,1,4,2,5,3,6,4,7,5,8,6,9,7,10,8,11] 

संपादित करें: जब मैं GHCi 6.12.1 का उपयोग के रूप में उबंटू 10.04 में पैक किया है, मैं तुम्हें के रूप में ही त्रुटि मिलती है।

+0

मुझे संदेह है कि मेरे पास बहुत पुराना संस्करण हो सकता है। मुझे इसे हैकसेल वेबसाइट की बजाय रिपोस से मिला है। 6.12.1 उबंटू 10.04 पर। धन्यवाद। –

+0

हां, यह समस्या की तरह दिखता है। – dave4420

0

:{ और :} के प्रतीक हास्केल का हिस्सा नहीं हैं, मुझे लगता है कि आप जो पाठ पढ़ रहे हैं उसके साथ कुछ करना है। साथ ही, आपके द्वारा पोस्ट किया गया कोड लैम्बडा को सूची मोनड के रूप में उपयोग किया जा रहा है। इसे आज़माएं:

do 
    l <- [0..9] 
    ps <- (\x -> [x-1, x+2]) l 
    return ps 
+1

मैं इंप्रेशन के तहत था: जीएचसीआई में मल्टीलाइन कोड के लिए '{{और':} 'आवश्यक था। गलती से सूची तर्क छोड़ दिया, क्षमा करें। हालांकि मैंने मोनाड्स के चारों ओर अपने सिर को काफी लपेटा नहीं है। क्या मुझे आपके कोड का उपयोग जीएचसीआई में करना चाहिए? प्रत्येक पंक्ति स्वतंत्र रूप से व्याख्या की जा रही है। –

+0

मुझे लगता है कि मुझे http://stackoverflow.com/a/3532505/420386 पर आधारित एक रास्ता मिल गया है। अर्ध-कॉलन का उपयोग समस्या को हल करने लगता है, हालांकि यह मुझे थोड़ा गंदा महसूस करता है :) धन्यवाद। –

+1

': {' और ':}' ghci में multiline कोड के लिए आवश्यक हैं, हां। – dave4420

संबंधित मुद्दे