番号とびのファイルを連番コピーファイルで間を埋めるプログラムその1

会社で要望で来ていたので、これを勉強中のHaskellつかってやろうって試み。

ちなみにノートPCではemacshaskell-mode、自宅ではEclipseのEclipseFP使ってるんですが、
emacshaskell-modeの方が関数の型がカーソルオーバーすると見えるので便利っすね。
Eclipseはまだ使い慣れていないってのもありますが・・・。


まずはファイルのコピー

Haskell ファイルコピーでググルと、どう書く?.orgが引っかかったので、
その中からファイルコピーっぽい部分を抜粋してコンパイル

こんな感じ。

module Main where

import System.Directory

main::IO()
main = copyFile "data/hoge.txt" "data/hoge2.txt"

System.Directoryに定義されているcopyFileって関数でいけるっぽい。


ここからがキモ

まだHaskellプログラミングには慣れていないので、
ここからどう考えるかが効率いいのかわからない。


ひとまず方針としては、ディレクトリ舐めるのは面倒そうなので、
ファイル番号が記してあるファイルから連番のファイルを作ることをしてみる。


・・・と思ったが、全然わからん・・・。
Haskell本が手元にないとリファレンスがなさすぎてだめだなぁ。


やろうとしたことは、下記のとおり。

  • 1.文字列から文字と数字を分離。
  • 2.数字の文字列を数値に変換。
  • 3.数値のリスト[1,2,3,4]というリストがあったとき、[(1,2),(2,3),(3,4)]っていうタプルのリストを生成する
  • 4.タプルの組の間を充足する整数列を生成。(1,4)のタプルがあった場合、[1,2,3,4]のリストを生成するってこと。
  • 5.生成した数値列に元の文字列をくっつけたものを表示


まず1で躓いたorz


ということで次回に続く!