Can you compare the normalized output using unicode-transforms and using text-icu, for both of your files? Let me know if you find a difference between the two. If it is different please raise an issue at https://github.com/harendra-kumar/unicode-transforms .
-harendra On 5 March 2017 at 18:05, S. H. Aegis <[email protected]> wrote: > 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\P >> rograms\stack\x86_64-windows\msys2-20150512\mingw64\include >> extra-library-dirs: C:\Users\shaeg\AppData\Local\P >> rograms\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\m >> sys2-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\W >> bem;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\SimplePa >> ss\;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\P >> rograms\stack\x86_64-windows\ghc-8.0.2\bin\ghc.EXE >> compiler-bin: C:\Users\shaeg\AppData\Local\P >> rograms\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\P >> rograms\stack\x86_64-windows\msys2-20150512\mingw64\include >> extra-library-dirs: C:\Users\shaeg\AppData\Local\P >> rograms\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\P >> rograms\stack\x86_64-windows\ghc-8.0.2\lib\package.conf.d >> ghc-package-path: C:\Users\shaeg\Documents\Haske >> ll\samChecker3\.stack-work\install\02136e14\pkgdb;C:\sr\ >> snapshots\7dd4ddea\pkgdb;C:\Users\shaeg\AppData\Local\Prog >> rams\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\Haske >> ll\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 > <https://groups.google.com/d/msgid/haskell-stack/a7be59d2-09d3-40f8-930b-eda4fbc0ed57%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- 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/CAPW%2BkkZWqvpZzvxmFj3Fv4-ZEtw%2BRjGcZiX5b5howfS-9e0kVQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
