X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.runtime%2Fscl%2FPrelude.scl;h=0dcd1b7507d6ee99ee2866c174f5b987ee1e77e0;hp=b29b04a2fe42025c1538637f10080c921e4bf12f;hb=53059ca1a958697cc6235d27628614fbaa944d59;hpb=e87f0965679502de281692c298d66a7ae9507bd8 diff --git a/bundles/org.simantics.scl.runtime/scl/Prelude.scl b/bundles/org.simantics.scl.runtime/scl/Prelude.scl index b29b04a2f..0dcd1b750 100644 --- a/bundles/org.simantics.scl.runtime/scl/Prelude.scl +++ b/bundles/org.simantics.scl.runtime/scl/Prelude.scl @@ -1842,6 +1842,17 @@ maybeToList :: Maybe a -> [a] maybeToList (Just a) = [a] maybeToList _ = [] +""" +`takeWhile p l`, returns the longest prefix (possibly empty) of list `l` of elements that satisfy `p` +""" +takeWhile :: (a -> Boolean) -> [a] -> [a] +takeWhile f l = loop 0 + where + len = length l + loop i | i == len = l + | f (l!i) = loop (i+1) + | otherwise = take i l + partition :: (a -> Boolean) -> [a] -> ([a], [a]) partition p l = runProc do res1 = newArrayList @@ -2283,9 +2294,9 @@ importJava "org.simantics.databoard.binding.mutable.Variant" where @JavaName getValue rawVariantValue :: Variant -> a @JavaName ofInstance - variantOf :: a -> Variant + variantOf :: a -> Variant @JavaName "" - variantOfWithBinding :: Binding a -> a -> Variant + variantOfWithBinding :: Binding a -> a -> Variant @JavaName getValue variantValue_ :: Variant -> Binding a -> a @JavaName toString