aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-01-12 01:22:20 +0000
committerGitHub <noreply@github.com>2021-01-12 01:22:20 +0000
commiteb7014e3f74245a76a943999bbee0fe0e000c603 (patch)
treeedbe5561fca4df92e4f904f26ef13366b6d3943d
parentc41e17d8fe3aec59f8ac0e04d5bd076d5dd61039 (diff)
parent84eea8cee245505c9ac7aac9ee7a1b6d99ce36fc (diff)
downloadperlweeklychallenge-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-xchallenge-095/stuart-little/haskell/ch-1.hs10
-rwxr-xr-xchallenge-095/stuart-little/haskell/ch-2.hs32
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)