From 94ed1401fe804a4504ad7cb9ee03ce99967858f4 Mon Sep 17 00:00:00 2001 From: Nilstrieb Date: Tue, 17 Aug 2021 21:39:45 +0200 Subject: [PATCH] data store search --- chapter2/average | Bin 0 -> 79384 bytes chapter2/hello | Bin 0 -> 33664 bytes chapter3/PatternMatching.idr | 11 ++++++++++- chapter4/DataStore.idr | 10 ++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 chapter2/average create mode 100644 chapter2/hello diff --git a/chapter2/average b/chapter2/average new file mode 100644 index 0000000000000000000000000000000000000000..509941d88247bec5892aee9354c17b634c0d189c GIT binary patch literal 79384 zcmb<-^>JfjWMqH=W(GS35buBrM8p9?F+}KrL?Ijp1`7sW1_uUt1~~>c1_lNe1_lP0 zI&}I56GRV;=74Y+n4$V4Knw;326S2mst!iOYzNUG`=HVo)CK{F5R7Jk@>oP=70kK;&Wi zK*0slHvy_|0#qN2W&kMwX@SzP@C3OLge{=vqSI*JWkA;#0o8|2yMXLsU|@jJAUi-p z!B0z4Kx}k-V0>Km1wi#BTmzZHz<^HofDC0|V1Ut3E<@nck`z$5Ky(o%q0!C|1ho%W zJTyT44Wl8k#K54RlbK{@qMwtZo0FMWTA^EEVWw+lqF0=+X9Tt!FvlH-_yZi`3vihK28Z}@ z9O9dChlko4)Y6fh=U3mP~Jl}1H^vH z$iN`TAjRMy04hxw;N`mx69a=1NC6sF0sB{gK>*}I29REef>}^=0?^Dk2lkf$gTi)* zx@QoIfgvX|sh}jIC^az!R5%(i#CwML#;2qfrKV>Vm!uYj_&Vq0=cR@uCgr3; zjfl@JElI72Pf0BTGxIV_ z;L7szl2hRvur#`T5VKJp=PeXD}aY;&kX$eDGL1{@b zNGZs@xiI}HsYOK~7v&*oh>tI>EG~;L&P>ls%mJC2lbM&w5Fejhkr6&wJ$1q|`=IhjexAfFYL#OEev<}sudrKU2t`*=Dz#~bMx>lwk>MtY`jwmF<- zXaZ*lx%qieljA`Nmx+NHT(g2m76xVpRt6R@1o4qE0|OfaGXpzV4y29) ztdEHS#Aat;24zOD97GQz12edu2HC*KzyxN4>URSM28JTZOil&{c7{YI25?iaR0_mr zVaSD6_KXay3>J(KIgozw%uHTTF0O>CpE7Y88^|@yP`(IQo|T~w%7>W83^osBX9?Io zCWaYM^I`2ySi5h5D##WFh7M@^5+?zkwud>k5*LLjW?*1=fh4YmB>n+OTpLOJ2a>oZ zk~pk91-0{#-2*EhLE@mY9j0XkAH-km&^8-Pd;^j=G)llyJCMXdZ9lLe0|UbWByo@( zF!2*e;-IjDiC;hx2iXl1zkwtUi(`=710-=ykN_0FKoaMIih-yPNaEZe0Vw`~B+dgB z15?oO1i6J5EC3-mki_{QLSRw=Nt_=n0wE-j#6jsABFey^fFzFGp4C7S7ltWjU|=vn z5(l-*VNw=I;$kpCP=6LlTpUT<14�Njv~aToOq<0!ds7Njw2bTpCF{14$g#_XSB8 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 literal 0 HcmV?d00001 diff --git a/chapter2/hello b/chapter2/hello new file mode 100644 index 0000000000000000000000000000000000000000..581e49c835722c7f74c6c83f24f8697ac8f5034b GIT binary patch literal 33664 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 K_gX+%5DEZuse8-- literal 0 HcmV?d00001 diff --git a/chapter3/PatternMatching.idr b/chapter3/PatternMatching.idr index 7dbeaaa..1bba202 100644 --- a/chapter3/PatternMatching.idr +++ b/chapter3/PatternMatching.idr @@ -42,4 +42,13 @@ mutual isOdd Z = False isOdd (S k) = isEven k - + + + +displayList : Show a => List a -> String +displayList xs = "[" ++ showItems xs ++ "]" + where + showItems : Show a => List a -> String + showItems [] = "" + showItems (x :: []) = show x + showItems (x :: next) = show x ++ "," ++ showItems next diff --git a/chapter4/DataStore.idr b/chapter4/DataStore.idr index e3f966a..342ed71 100644 --- a/chapter4/DataStore.idr +++ b/chapter4/DataStore.idr @@ -18,10 +18,16 @@ addToStore (MkData size items) newitem = MkData _ (addToData items) addToData [] = [newitem] addToData (x :: xs) = x :: addToData xs +search : DataStore -> String -> List String +search store query = let predicate = isInfixOf query + allItems = toList (items store) in -- can't be bothered to work with dependant pairs + filter predicate allItems + data Command = Add String | Get Integer | Size + | Search String | Quit parseCommand : (cmd : String) -> (args : String) -> Maybe Command @@ -31,6 +37,7 @@ parseCommand "get" val = case all isDigit (unpack val) of False => Nothing parseCommand "quit" args = Just Quit parseCommand "size" args = Just Size +parseCommand "search" args = Just (Search args) parseCommand _ _ = Nothing parse : (input : String) -> Maybe Command @@ -52,6 +59,9 @@ processInput store inp = case parse inp of Just ("ID " ++ show (size store) ++ "\n", addToStore store item) Just (Get pos) => getEntry pos store Just Size => Just ("Size: " ++ show (size store) ++ "\n", store) + Just (Search query) => case (search store query) of + [] => Just ("Item Not Found\n", store) + items => Just (show items ++ "\n", store) Just Quit => Nothing