
Hi. I worte some code. and fixed some errors with the help of good persons. Now, this utility works properly in Stack environment. How can I install this utility in other computer? This utility use text-icu and I coded this utility on windows. Of course, I want to work this utility on other windows OS. I copied %stackPath%\.stack-work\install\~\bin\samCheceker-exe.exe to some other folder, and execution through CMD. But I got error message that says "libicuuc57.dll dose not exist. so program can't start. please re-install the program." I copied libicuuc57.dll, and so... as like programming newbees, but failed. "stack install" command was the same result. How can I install the Executable File to other windows system? Thank you. Sincerely, S. Chang. ------------------ samChecker.cabal ------------------ name: samChecker3 version: 0.1.0.0 -- synopsis: -- description: homepage: https://github.com/githubuser/samChecker3#readme license: BSD3 license-file: LICENSE author: Author name here maintainer: example@example.com copyright: 2017 Author name here category: Web build-type: Simple extra-source-files: README.md cabal-version: >=1.10 library hs-source-dirs: src exposed-modules: Lib build-depends: base >= 4.7 && < 5 , text , text-icu , bytestring , regex-tdfa default-language: Haskell2010 executable samChecker3-exe hs-source-dirs: app main-is: Main.hs ghc-options: -threaded -rtsopts -with-rtsopts=-N build-depends: base , samChecker3 , text , text-icu , bytestring , regex-tdfa default-language: Haskell2010 test-suite samChecker3-test type: exitcode-stdio-1.0 hs-source-dirs: test main-is: Spec.hs build-depends: base , samChecker3 ghc-options: -threaded -rtsopts -with-rtsopts=-N default-language: Haskell2010 source-repository head type: git location: https://github.com/githubuser/samChecker3 ----------- Main.hs ----------- module Main where import Lib import System.Environment --import System.FilePath.Windows import Data.Text.ICU.Convert -- There is Codec.Text.IConv, too. import qualified Data.Text as T import qualified Data.Text.IO as TIO import qualified Data.ByteString as BS main :: IO () main = do args <- getArgs -- 1st=SAM 2nd=csv conv <- open "MS949" Nothing -- byteSAM :: ByteString --byteSAM <- BS.readFile "C:\\Users\\shaeg\\Documents\\Haskell\\samChecker3\\BoHom.dat" byteSAM <- BS.readFile (args !! 0) -- byteRxDxData :: ByteString --byteRxDxData <- BS.readFile "C:\\Users\\shaeg\\Documents\\Haskell\\samChecker3\\RxDxData.csv" byteRxDxData <- BS.readFile (args !! 1) TIO.putStrLn $ T.concat $ checkRxDxSAM (toUnicode conv byteRxDxData) (toUnicode conv byteSAM) ----------- Lib.hs ----------- module Lib -- ( readSAM -- , readCSV -- , checkRxDxSAM -- ) where where import Data.Text as T import Data.Text.IO as TIO import Data.Text.ICU.Convert import qualified Data.ByteString as BS import Text.Regex.TDFA import Data.Text.ICU as I import Prelude hiding (take, drop, map, lines) type RowSAM = Text type SAM = [Text] type Case = Text type RowRxDx = Text type RxDx = [Text] type RxDxList = [[Text]] type Rx = Text type Dx = Text type MediName = Text type Message = Text type ErrorMessage = Text type Date = Text type PtName = Text checkRxDxSAM :: RowRxDx -> RowSAM -> [ErrorMessage] checkRxDxSAM rxDx sam = [pickupError r s | r <- (makeTuple rxDx), s <- makeSamData sam] makeSamData :: RowSAM -> SAM makeSamData sam = splitIntoCase sam makeTuple :: RowRxDx -> [(Rx, Dx, MediName)] makeTuple rxDx = zip3 (makeRxList rxDx) (makeDxList rxDx) (makeMediNameList rxDx) makeMediNameList :: RowRxDx -> [MediName] makeMediNameList rxDx = fmap pickupMediName $ makeRxDxList rxDx makeDxList :: RowRxDx -> [Dx] makeDxList rxDx = fmap pickupDx $ makeRxDxList rxDx makeRxList :: RowRxDx -> [Rx] makeRxList rxDx = fmap pickupRx $ makeRxDxList rxDx makeRxDxList :: RowRxDx -> RxDxList makeRxDxList rowRxDx = fmap f (lines rowRxDx) where f :: Text -> [Text] f x = splitOn (pack ",") x pickupError :: (Rx, Dx, Message) -> Case -> ErrorMessage pickupError (rxCode, dxCode, errMsg) ptCase = case isErrorRxDx rxCode dxCode ptCase of --True -> append (pickupCaseDate ptCase) $ append (pack " ") $ append (pickupPtName ptCase) $ append (pack " Omit ") $ append dxCode $ append (pack " for ") errMsg True -> append (pickupCaseDate ptCase) $ append (pack " ") $ append (pickupPtName ptCase) $ append (pack " Omit ") $ append dxCode $ append (pack " for ") $ append errMsg (pack "\n") False -> T.empty pickupMediName :: RxDx -> MediName pickupMediName rxDx = rxDx !! 0 pickupDx :: RxDx -> Dx pickupDx rxDx = rxDx !! 2 pickupRx :: RxDx -> Rx pickupRx rxDx = rxDx !! 1 pickupPtName :: Case -> PtName pickupPtName ptCase = take 3 $ drop 45 ptCase pickupCaseDate :: Case -> Date pickupCaseDate ptCase = take 8 $ drop (348 + 2) ptCase isErrorRxDx :: Rx -> Dx -> Case -> Bool isErrorRxDx rxCode dxCode ptCase = case isExistRx rxCode ptCase of True -> if (isExistDx dxCode ptCase) then False else True False -> False isExistDx :: Dx -> Case -> Bool --isExistDx dxCode ptCase = (unpack ptCase) =~ (unpack dxCode) isExistDx dxCode ptCase = case (I.find (regex [] dxCode) ptCase) of Just x -> True Nothing -> False isExistRx :: Rx -> Case -> Bool isExistRx rxCode ptCase = rxCode `isInfixOf` ptCase splitIntoCase :: RowSAM -> SAM splitIntoCase = splitOn $ pack "AH021" --readCSV :: IO Text --readCSV = pack <$> readFile "/Users/shaegis/Documents/Haskell/samChecker3/RxDxData.csv" --readSAM:: IO Text --readSAM = pack <$> readFile "/Users/shaegis/Documents/Haskell/samChecker3/BoHomUTF8.dat"