Skip to content

Instantly share code, notes, and snippets.

@Lazzlo2096
Created August 1, 2018 15:06
Show Gist options
  • Save Lazzlo2096/b9eccc4a2f21398bc8c7216c640ed59d to your computer and use it in GitHub Desktop.
Save Lazzlo2096/b9eccc4a2f21398bc8c7216c640ed59d to your computer and use it in GitHub Desktop.
Has Pre kek 0.1
-- Int : 1,2,3,..
data Qwe = Non1 | Non2 deriving( Show )
data As = AA Int | SS Qwe deriving( Show )
----data As2 a = AAA (Just Int) | SSS (Just Qwe)
data As2 = AAA (Maybe Int) | SSS (Maybe Qwe) deriving( Show )
----f :: Int of Qwe -> (Maybe Int or Maybe Qwe)
f :: As -> As2
f (AA a) = AAA (Just a)
f (SS Non1) = SSS Nothing
f (SS a) = SSS (Just a)
------------------
-- data Tt a = AAAt (a Int) | SSSt (a Qwe)
data As2' a = AAA' (a Int) | SSS' (a Qwe)
-- f' :: As -> (Int -> a Int) -> As2' a
-- f' :: As -> (Int -> Maybe Int) -> As2' Maybe
-- f' :: As -> (b -> (a -> b) -> Maybe a -> b) -> As2' Maybe
-- f' (AA a) b = AAA' (b a)
-- f' (SS a) b = SSS' (b a)
-- f' (SS Non1) b = SSS' b
-- let res1 = f' (AA 5) Just
-- let res2 = f' (AA 5) Nothing
f'' a b = (b a) -- = h -- (если b типа (a->b a))
f' (AA a) b = AAA' (b a) --(если b типа (a->b a))
-- f' (AA a) b = AAA' (b) --(если b не типа (a->b a)) или (если b типа (b a))
-- g = f' (AA 5) Just
-- g2 = f' (AA 5) Nothing
-- f' :: As -> As2' Maybe
-- f' (AA a) = AAA' (Just a)
-- f' (SS Non1) = SSS' Nothing
-- f' (SS a) = SSS' (Just a)
--===============================
-- data Maybe a = Just a | Nothing
data Maybe2 a = Just2 a | Nothing2
-- let res1 = h 5 Just -- == Just 5
-- let res2 = h 5 Nothing -- == Nothing
-- или хотябы let res2 = h Nothing (5) опцион парам -- == Nothing
h :: Int -> (Int -> Maybe Int) -> Maybe Int
-- h _ Nothing = Nothing
h a b = b a
h2 :: Int -> (Maybe Int) -> Maybe Int
h2 _ Nothing = Nothing
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment