Я пытаюсь запустить код 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
чтением текстового файла, но мне кажется, что все должно быть в порядке.