मैं अपने हास्केल होमवर्क के अंतिम भाग को पूरा करने की कोशिश कर रहा हूँ और मैं अटक कर रहा हूँ मेरी कोड अब तक:हास्केल
data Entry = Entry (String, String)
class Lexico a where
(<!), (=!), (>!) :: a -> a -> Bool
instance Lexico Entry where
Entry (a,_) <! Entry (b,_) = a < b
Entry (a,_) =! Entry (b,_) = a == b
Entry (a,_) >! Entry (b,_) = a > b
entries :: [(String, String)]
entries = [("saves", "en vaut"), ("time", "temps"), ("in", "<`a>"),
("{", "{"), ("A", "Un"), ("}", "}"), ("stitch", "point"),
("nine.", "cent."), ("Zazie", "Zazie")]
build :: (String, String) -> Entry
build (a, b) = Entry (a, b)
diction :: [Entry]
diction = quiksrt (map build entries)
size :: [a] -> Integer
size [] = 0
size (x:xs) = 1+ size xs
quiksrt :: Lexico a => [a] -> [a]
quiksrt [] = []
quiksrt (x:xs)
|(size [y|y <- xs, y =! x]) > 0 = error "Duplicates not allowed."
|otherwise = quiksrt [y|y <- xs, y <! x]++ [x] ++ quiksrt [y|y <- xs, y >! x]
english :: String
english = "A stitch in time save nine."
show :: Entry -> String
show (Entry (a, b)) = "(" ++ Prelude.show a ++ ", " ++ Prelude.show b ++ ")"
showAll :: [Entry] -> String
showAll [] = []
showAll (x:xs) = Main.show x ++ "\n" ++ showAll xs
main :: IO()
main = do putStr (showAll (diction))
सवाल पूछते हैं:
एक हास्केल प्रोग्राम हैं जो अंग्रेजी वाक्य 'अंग्रेजी' लेता लिखें, अप द्विआधारी खोज का उपयोग कर अंग्रेजी-फ्रेंच शब्दकोश में प्रत्येक शब्द लग रहा है, शब्द के लिए शब्द प्रतिस्थापन करता है, असेंबल फादर एनच अनुवाद, और इसे प्रिंट करता है।
समारोह 'quicksort' को खारिज कर दिया डुप्लिकेट प्रविष्टियों ('त्रुटि'/बीच में बंद करें साथ) तो ठीक है कि वहाँ किसी भी अंग्रेजी शब्द के लिए एक फ्रेंच परिभाषा। परीक्षण मूल 'raw_data' दोनों के साथ 'quicksort' और '("बचाता है", "sauve")' raw_data 'में जोड़ने के बाद।
यहां एक वॉन न्यूमैन देर से रोक रहा है बाइनरी खोज के संस्करण। हास्केल में शाब्दिक लिप्यंतरण बनाएं। प्रविष्टि के तुरंत बाद, हास्केल संस्करण को रिकर्सिव "लूप इनवेरिएंट" सत्यापित करना होगा, 'त्रुटि'/निरस्त करने के साथ समाप्त होने पर इसे रोकना विफल रहता है। यह भी उसी फैशन में समाप्त होता है यदि अंग्रेजी शब्द नहीं मिला है।
function binsearch (x : integer) : integer local j, k, h : integer j,k := 1,n do j+1 <> k ---> h := (j+k) div 2 {a[j] <= x < a[k]} // loop invariant if x < a[h] ---> k := h | x >= a[h] ---> j := h fi od {a[j] <= x < a[j+1]} // termination assertion found := x = a[j] if found ---> return j | not found ---> return 0 fi
हास्केल संस्करण
binsearch :: String -> Integer -> Integer -> Entry
निरंतर शब्दकोश 'एक' प्रकार के '[प्रवेश]' के रूप में में विश्व स्तर पर दिख रहा है। संकेत: 'binsearch' दर्ज करने पर तुरंत अपनी प्रविष्टि (अंग्रेज़ी शब्द) को में 'एंट्री' बनाएं।
उच्च स्तरीय डेटा प्रकार 'प्रवेश' की प्रोग्रामिंग मूल्य कि, आप पूर्णांकों पर इन दो कार्यों डिज़ाइन कर सकते हैं, तो यह लिफ्ट उन पर संचालित करने के लिए के लिए प्रवेश के लिए तुच्छ है।
कोई भी जानता है कि मुझे अपने बाइनरीसेर्च फ़ंक्शन के बारे में कैसे जाना है?
हाँ, टाइपो ने परेशानी का एक गुच्छा दिया, मुझे कोड चलाने के दौरान कुछ अनंत लूप मिला। – Flame