يعمل TCP في GHCi، ويتم تخزينه مؤقتًا حتى خروج البرنامج من البرنامج المترجم مع Leksah
-
28-10-2019 - |
سؤال
لقد كتبت هذا العميل النموذجي البسيط لإرسال الأوامر إلى الخادم الذي أقوم بتطويره.إنه يعمل بشكل مثالي في GHCi، لكن الإصدار المترجم يقوم بتخزين كل شيء مكتوب حتى أكتب "إنهاء" ويخرج البرنامج.عند هذه النقطة يتم إرسال كل نص الإدخال.
ما الخطأ الذي افعله؟ولماذا يختلف عند تجميعه؟
تحديث: إنه يعمل كما هو متوقع إذا تم تجميعه مع ghc Main.hs
.المشكلة تحدث عندما يتم تجميعها مع ليكسا عبر الحزمة -> البناء.هل يعرف أحد كيفية الحصول على سطر الأوامر الذي يستخدمه Leksah؟
معلومات النظام:OSX 10.6، GHC 7.0.3، الشبكة 2.3.0.2
module Main (
main
) where
import System.IO
import Network
main = do
hServer <- connectTo "localhost" (PortNumber 7000)
hSetBuffering hServer NoBuffering
loop hServer
hClose hServer
where loop :: Handle -> IO ()
loop hServer = do
s <- getLine
hPutStrLn hServer s
case s of "quit" -> return ()
otherwise -> loop hServer
المحلول 2
حسنًا، يبدو أن Leksah لم يكن يبني التطبيق في الواقع عندما اعتقدت أنه كان كذلك.لا بد أنني كنت أقوم بتشغيل الكود القديم بدون hSetBuffering
يتصل.لقد تم حل المشكلة من خلال عملية التنظيف وإعادة البناء.الاعتذار والشكر للجميع على وقتك والمساعدة.
يحرر: وجدته - في حالة الخلط بين هذا الأمر وأي شخص آخر، عند النقر فوق package->build، لا يقوم Leksah بإنشاء تطبيق مجمع إذا كان في وضع التصحيح/ghci.
نصائح أخرى
يستخدم Leksah "بناء Cabal"، والإصدارات الأقدم "بناء إعداد Runhaskell".