haskell-jp / beginners #24 at 2023-11-16 00:03:09 +0900

初歩的ですが質問をさせてください

「Haskell入門」を参考にパッケージsplit-0.2.4のモジュールData.List.SplitのSplitOnメソッドを使ってパーサーを作っています。
コードは以下の通りです。
import Data.List.Split

data YMD =YMD Int Int Int deriving Show

parseYMD :: String -> Maybe YMD
parseYMD = listToymd . splitOn "/"
    where
        listToymd :: [String] -> Maybe YMD
        listToymd (y:m:d:_) = Just $ YMD (read y) (read m) (read d)
        listToymd _ = Nothing

これをpar.hsとして保存しています。

runghc par.hs --package split-0.2.4

と打って実行を試みると次のようなエラーが出てしまいます。原因を教えてください。
(なおパッケージのインストールはstack install より行っています)

par.hs:1:1: error:
    Could not find module 'Data.List.Split'
    Use -v to see a list of the files searched for.
  |
1 | import Data.List.Split
  | ^^^^^^^^^^^^^^^^^^^^^^
1. runghcがstackの管理下のものではなくおそらくghcupでインストールしたものになっているのでstackでのインストールが反映されていない
2. 既にそのバージョンがLTSから外れているのでバージョン指定しないほうが適切なやつが選択されそう
のでまず実行コマンドは以下のようになります。

stack runghc par.hs --package split

3. またrunghcであってreplではないので適当にmain関数が必要なため、例えば以下のように追加しておく必要があります

main = print $ parseYMD "2015/02/01"
ありがとうございます。
無事、解決することができました