Haskellでbasename
ちょっと分かってきた気がするけど、まだまだ。でもMonadを少し使えるようになった。これぐらいだったらいいけど、もっと大きいものを作ろうとすると途端に手が止まってしまう。ムズい。
#!/usr/bin/runhugs module Main where import Maybe import System (getArgs) import List (elemIndex,last) main :: IO () main = do { args <- getArgs ; let basename = last $ sep $ head args in putStrLn (basename :: String) } sep :: String -> [String] sep [] = [] sep s = sep' (s) (elemIndex '/' s) sep' :: String -> Maybe Int -> [String] sep' s Nothing = [s] sep' s (Just idx) = if idx == 0 then sep $ tail s else [x] ++ sep y where (x,y) = splitAt idx s