Jump to content

Binary search: Difference between revisions

→‎{{header|Haskell}}: Corrected inner lines of helper function
(→‎{{header|Haskell}}: A variant which returns an Either value, and uses a helper function with a simpler type.)
(→‎{{header|Haskell}}: Corrected inner lines of helper function)
Line 2,060:
let mid = (lo + hi) `div` 2
in case p mid of
LT -> bSearchgo plo (lo, mid - 1)
GT -> bSearch pgo (mid + 1,) hi)
EQ -> Right mid
in go low high
Line 2,069:
:: (Ix i, Integral i, Ord e)
=> Array i e -> e -> Either String i
bSearchArray a x = bSearch (compare x . (a !)) (bounds a)</lang>
 
-- TEST ---------------------------------------------------
axs
:: (Num i, Ix i)
=> Array i String
axs =
listArray
(0, 11)
[ "alpha"
, "beta"
, "delta"
, "epsilon"
, "eta"
, "gamma"
, "iota"
, "kappa"
, "lambda"
, "mu"
, "theta"
, "zeta"
]
 
main :: IO ()
main =
let e = "mu"
lrFound = bSearchArray axs e
in putStrLn $
'\'' :
e ++
case lrFound of
Left x -> "\' " ++ x
Right x -> "' found at index " ++ show x</lang>
 
=={{header|HicEst}}==
9,659

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.