Запуск интерактивных команд с библиотекой haskell turtle

Я пытаюсь запустить интерактивную команду с библиотекой haskell turtle следующим образом:

#!/usr/bin/env stack
-- stack --install-ghc runghc --package turtle
{-# LANGUAGE OverloadedStrings #-}
import Turtle
main = procs "python" [] empty

(Я также попробовал функцию оболочки, но она тоже не работает.) Когда я запускаю ее, ничего не происходит:

$ ./turtleTest.hs
$

Но если я изменю команду "python" на "ls", это сработает.

Как запустить интерактивную команду, например, python repl с библиотекой turtle?

2 ответа

Вот полный рабочий пример, извлеченный из комментариев. Если запустить интерактивный процесс через Turtle, можно сделать что-то вроде этого:

#!/usr/bin/env stack
-- stack script --resolver lts-14.20 --package turtle --package process
{-# LANGUAGE OverloadedStrings #-}

import System.Process (callProcess)
import Turtle (sh, liftIO)

main :: IO ()
main = sh $ liftIO $ callProcess "python" []
      {-# LANGUAGE OverloadedStrings #-}

import Turtle.Prelude (proc, procs, shell, shells)

main :: IO ()
main = do
  procs "ls" [] mempty         --(without ExitCode)
  procs "ls" ["-la"] mempty    --(without ExitCode)
  proc "pwd" [] mempty         --(with ExitCode)
  proc "ls" ["-la"] mempty     --(with ExitCode)

  shells "ls -la" mempty       --(without ExitCode)
  shell "pwd" mempty           --(with ExitCode)
  shell "ls -la" mempty        --(with ExitCode)
Другие вопросы по тегам