[Haskell-beginners] Execution error in using text-icu on windows

S. H. Aegis shaegis at gmail.com
Fri Mar 3 23:57:02 UTC 2017


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 at 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"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20170304/986ad9c6/attachment.html>


More information about the Beginners mailing list