diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-01-12 01:22:20 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-12 01:22:20 +0000 |
| commit | eb7014e3f74245a76a943999bbee0fe0e000c603 (patch) | |
| tree | edbe5561fca4df92e4f904f26ef13366b6d3943d | |
| parent | c41e17d8fe3aec59f8ac0e04d5bd076d5dd61039 (diff) | |
| parent | 84eea8cee245505c9ac7aac9ee7a1b6d99ce36fc (diff) | |
| download | perlweeklychallenge-club-eb7014e3f74245a76a943999bbee0fe0e000c603.tar.gz perlweeklychallenge-club-eb7014e3f74245a76a943999bbee0fe0e000c603.tar.bz2 perlweeklychallenge-club-eb7014e3f74245a76a943999bbee0fe0e000c603.zip | |
Merge pull request #3225 from stuart-little/stuart-little_095_haskell
1st commit on 095_haskell
| -rwxr-xr-x | challenge-095/stuart-little/haskell/ch-1.hs | 10 | ||||
| -rwxr-xr-x | challenge-095/stuart-little/haskell/ch-2.hs | 32 |
2 files changed, 42 insertions, 0 deletions
diff --git a/challenge-095/stuart-little/haskell/ch-1.hs b/challenge-095/stuart-little/haskell/ch-1.hs new file mode 100755 index 0000000000..167b8b55c0 --- /dev/null +++ b/challenge-095/stuart-little/haskell/ch-1.hs @@ -0,0 +1,10 @@ +#!/usr/bin/env runghc + +-- run <script> <number> + +import System.Environment (getArgs,) +import Math.TreeFun.Tree (boolToInt,) + +main = do + (nr:_) <- getArgs + putStrLn $ show $ boolToInt (nr == reverse nr) diff --git a/challenge-095/stuart-little/haskell/ch-2.hs b/challenge-095/stuart-little/haskell/ch-2.hs new file mode 100755 index 0000000000..3f83159642 --- /dev/null +++ b/challenge-095/stuart-little/haskell/ch-2.hs @@ -0,0 +1,32 @@ +#!/usr/bin/env runghc + +-- run <script> + +import System.Environment (getArgs,) +import Control.Monad (liftM,) +import Data.Maybe (fromMaybe,fromJust,) +import Data.Stack (Stack,stackIsEmpty,stackNew,stackPop,stackPush,stackPeek,) + +maybeMin :: Ord a => Maybe a -> Maybe a -> Maybe a +maybeMin (Just x) (Just y) = Just (min x y) +maybeMin (Just x) _ = Just x +maybeMin _ (Just x) = Just x +maybeMin _ _ = Nothing + +stackMinimum :: Ord a => Stack a -> Maybe a +stackMinimum stack + |stackIsEmpty stack = Nothing + |otherwise = maybeMin (stackMinimum rest) (Just popped) where + (rest,popped) = fromJust $ stackPop stack + +main = do + let + stack :: Stack Int + stack = foldl stackPush (stackNew) [0,-1,3,10,4] + putStrLn $ "Initial stack: " ++ (show stack) + let (rest,popped) = fromJust $ stackPop stack + putStrLn $ "Popped: " ++ (show popped) + putStrLn $ "New stack: " ++ (show rest) + putStrLn $ "Peeking: " ++ (show $ fromJust $ stackPeek rest) + putStrLn $ "Current stack: " ++ (show rest) + putStrLn $ "Smallest value: " ++ (show $ fromJust $ stackMinimum rest) |
