Запуск haskell из c # с аргументами и получение вывода - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь запустить код haskell в C #, но, вообще говоря, я не хочу общаться с командной строкой в ​​c #.Я могу запускать такие команды, как «runhaskell hask», но я все еще не могу запускать такие команды, как «runhaskell hask

Это код, который я придумал.

C #:

private void Om_Programmet_Click(object sender, RoutedEventArgs e)
    {
        string current_directory = 
        System.AppDomain.CurrentDomain.BaseDirectory;
        string project_directory = 
        //current directory, but abbreviated it to fit into code block.
        Directory.GetParent(Directory.GetParent(D...

        string program = project_directory+"\\text.txt";

        string haskell_program = project_directory+"\\hask";
        string text_file = project_directory+"\\text.txt";
        string arguments = haskell_program+ " < "+text_file;
        Debug.WriteLine(arguments);

        var process = new Process();
        process.StartInfo.FileName = "runhaskell";
        process.StartInfo.Arguments = arguments;
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.UseShellExecute = false;
        process.OutputDataReceived += new 
        DataReceivedEventHandler(ReadOutput);
        process.ErrorDataReceived += new 
        DataReceivedEventHandler(ErrorOutput);

        process.Start();
        process.BeginOutputReadLine();
        process.BeginErrorReadLine();
        process.WaitForExit();

    }
    private static void ErrorOutput(object sender, DataReceivedEventArgs e)
    {
        if (e.Data != null)
        {
            Debug.WriteLine("Error: " + e.Data);
        }
    }

    private static void ReadOutput(object sender, DataReceivedEventArgs e)
    {
        if (e.Data != null)
        {
            Debug.WriteLine(e.Data);
        }
    }

Haskell:

main :: IO()
main = do
    c <- getContents
    putStrLn c

Этот код возвращает ошибкусообщение "hGetContents: неверный аргумент".

Кажется, что есть проблема с getContents чтением текстового файла, но мне кажется, что все должно быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...