Thank you so much, Harendra Kumar.
I re-write my code, and it works!
But wired result comes out.
All of fuctions works good indivisually, but final result have a error. 
There is no error when using text-icu or iconv lib.
Why these results come out? I needs any suggestions.
Thank you.
Have a nice day~

Sincerely, S. Chang.

C:\Users\shaeg\Documents\Haskell\samChecker3>stack exec samChecker3-exe 
> BoHom.dat RxDxData.csv
> samChecker3-exe.EXE: Prelude.!!: index too large


RxDxData.csv

> Name,codeNo,Dx,Blank
> Naem2,codeNo2,Dx2,Blank2
> ...
>

BoHom.dat
series of numbers that encoded in EUC-KR (more than 1000 lines) 

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.Text.Encoding      as TE
> import qualified Data.ByteString.Char8   as BS
> import qualified Data.ByteString.Lazy    as BL
> --import Codec.Text.IConv
> import Data.Text.Normalize
>
> main :: IO ()
> main = do
>         args <- getArgs    -- 1st=SAM 2nd=csv
>         byteSAM <- TIO.readFile $ (args !! 0)
>         byteRxDxData <- TIO.readFile $ (args !! 1)
>         TIO.putStrLn $ T.concat $ checkRxDxSAM (normalize NFKC byteSAM) 
> (normalize NFKC byteRxDxData
>

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.Char8 as BS
> import qualified Data.ByteString.Lazy  as BL
> import Text.Regex.TDFA
> --import Data.Text.ICU             as I
> import Prelude hiding (take, drop, map, lines)
> --import Codec.Text.IConv
> import Data.Text.Normalize        as TN
>
> 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 
>



On Sunday, March 5, 2017 at 1:35:11 AM UTC+9, S. H. Aegis wrote:
>
> Hi.
>
> I worte some code. and fixed some errors with the help of good persons.
> Now, this utility works properly in Stack environment.
> 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.
>
> With help of Francesco Ariis from ([email protected]), I steped 
> forword.
> But still got error message.
>
> C:\Users\shaeg\Documents\Haskell\samChecker3> stack build  
> --ghc-options="-static -optl-static"
> Warning: File listed in samChecker3.cabal file does not exist: README.md
> samChecker3-0.1.0.0: unregistering (local file changes: app\Main.hs 
> samChecker3.cabal src\Lib.hs test\Spec.hs)
> samChecker3-0.1.0.0: configure (lib + exe)
> Configuring samChecker3-0.1.0.0...
> samChecker3-0.1.0.0: build (lib + exe)
> Preprocessing library samChecker3-0.1.0.0...
> [1 of 1] Compiling Lib              ( src\Lib.hs, 
> .stack-work\dist\ca59d0ab\build\Lib.o )
> Preprocessing executable 'samChecker3-exe' for samChecker3-0.1.0.0...
> [1 of 1] Compiling Main             ( app\Main.hs, 
> .stack-work\dist\ca59d0ab\build\samChecker3-exe\samChecker3-exe-tmp\Main.o )
> Linking 
> .stack-work\dist\ca59d0ab\build\samChecker3-exe\samChecker3-exe.exe ...
> C:/Users/shaeg/AppData/Local/Programs/stack/x86_64-windows/ghc-8.0.2/mingw/bin/ld.exe:
>  
> cannot find -licuuc
> C:/Users/shaeg/AppData/Local/Programs/stack/x86_64-windows/ghc-8.0.2/mingw/bin/ld.exe:
>  
> cannot find -licuin
> C:/Users/shaeg/AppData/Local/Programs/stack/x86_64-windows/ghc-8.0.2/mingw/bin/ld.exe:
>  
> cannot find -licudt
> collect2.exe: error: ld returned 1 exit status
> `gcc.exe' failed in phase `Linker'. (Exit code: 1)
> Warning: File listed in samChecker3.cabal file does not exist: README.md
>
> --  While building package samChecker3-0.1.0.0 using:
>       
> C:\sr\setup-exe-cache\x86_64-windows\Cabal-simple_Z6RU0evB_1.24.2.0_ghc-8.0.2.exe
>  
> --builddir=.stack-work\dist\ca59d0ab build lib:samChecker3 
> exe:samChecker3-exe --ghc-options " -ddump-hi -ddump-to-file"
>     Process exited with code: ExitFailure 1
>
> [stack path] results
> extra-include-dirs: 
> C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\include
> extra-library-dirs: 
> C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\lib
>
> According to first error message(libicuuc57.dll dose not exist. so program 
> can't start. please re-install the program.), I find the path for 
> libicuuc57.dll, and re-set the extra-library-dirs.
> C:\Users\shaeg\Documents\Haskell\samChecker3>stack build 
> --extra-lib-dirs=C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\bin
>  
> --ghc-options="-static -optl-static"
> But got the same result.
>
> libicuuc75.dll, libicuin57.dll etc files is located in 
> C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\bin
>
> How can I fix this error?
> Thank you so much.
>
> Sincerely, S. Chang.
>
> ------------------------------------------------
> Here is my stack path.
> C:\Users\shaeg\Documents\Haskell\samChecker3>stack path
> stack-root: C:\sr
> project-root: C:\Users\shaeg\Documents\Haskell\samChecker3
> config-location: C:\Users\shaeg\Documents\Haskell\samChecker3\stack.yaml
> bin-path: 
> .;C:\sr\snapshots\7dd4ddea\bin;C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\ghc-8.0.2\bin;C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\ghc-8.0.2\mingw\bin;C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\bin;C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\usr\bin;C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\usr\local\bin;C:\Program
>  
> Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS 
> Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program
>  
> Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program 
> Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files 
> (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program 
> Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program 
> Files\Intel\IntelSGXPSW\bin\x64\Release\;C:\Program 
> Files\Intel\IntelSGXPSW\bin\win32\Release\;c:\Program 
> Files\Intel\WiFi\bin\;c:\Program Files\Common 
> Files\Intel\WirelessCommon\;C:\Program 
> Files\Hewlett-Packard\SimplePass\;C:\Users\shaeg\AppData\Roaming\local\bin;C:\Users\shaeg\AppData\Local\Microsoft\WindowsApps
> programs: C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows
> compiler-exe: 
> C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\ghc-8.0.2\bin\ghc.EXE
> compiler-bin: 
> C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\ghc-8.0.2\bin
> local-bin: C:\Users\shaeg\AppData\Roaming\local\bin
> extra-include-dirs: 
> C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\include
> extra-library-dirs: 
> C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\lib
> snapshot-pkg-db: C:\sr\snapshots\7dd4ddea\pkgdb
> local-pkg-db: 
> C:\Users\shaeg\Documents\Haskell\samChecker3\.stack-work\install\02136e14\pkgdb
> global-pkg-db: 
> C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\ghc-8.0.2\lib\package.conf.d
> ghc-package-path: 
> C:\Users\shaeg\Documents\Haskell\samChecker3\.stack-work\install\02136e14\pkgdb;C:\sr\snapshots\7dd4ddea\pkgdb;C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows\ghc-8.0.2\lib\package.conf.d
> snapshot-install-root: C:\sr\snapshots\7dd4ddea
> local-install-root: 
> C:\Users\shaeg\Documents\Haskell\samChecker3\.stack-work\install\02136e14
> snapshot-doc-root: C:\sr\snapshots\7dd4ddea\doc
> local-doc-root: 
> C:\Users\shaeg\Documents\Haskell\samChecker3\.stack-work\install\02136e14\doc
> dist-dir: .stack-work\dist\ca59d0ab
> local-hpc-root: 
> C:\Users\shaeg\Documents\Haskell\samChecker3\.stack-work\install\02136e14\hpc
> local-bin-path: C:\Users\shaeg\AppData\Roaming\local\bin
> ghc-paths: C:\Users\shaeg\AppData\Local\Programs\stack\x86_64-windows
>

-- 
You received this message because you are subscribed to the Google Groups 
"haskell-stack" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/haskell-stack/a7be59d2-09d3-40f8-930b-eda4fbc0ed57%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to