يعمل TCP في GHCi، ويتم تخزينه مؤقتًا حتى خروج البرنامج من البرنامج المترجم مع Leksah

StackOverflow https://stackoverflow.com/questions/5890054

سؤال

لقد كتبت هذا العميل النموذجي البسيط لإرسال الأوامر إلى الخادم الذي أقوم بتطويره.إنه يعمل بشكل مثالي في 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".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top