yata is not single?
Currently Offline
Multiple game bans on record | Info
2657 day(s) since last ban
Artwork Showcase
●▬▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬●
VKONTAKT ponisimuskelisimus

{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeFamilyDependencies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE ViewPatterns #-}

module Yatamerusi where

import Data.Kind (Type)
import Data.Proxy
import Data.Typeable (Typeable)
import Data.Type.Equality (eqT, (:~:)(..))

-- ÀêsteamfacepalmÀê WHAT IS THIS FUNCTION? ÀêmhfuryÀê
-- ÀêkingswordÀê THE LEGEND BEGINS ÀêkingswordÀê

data Any where
Any :: (Typeable a, Eq a) => a -> Any -- ÀêmhfuryÀê HANDLES ANY DATA TYPE ÀêmhfuryÀê

instance Eq Any where
Any (a :: a) == Any (b :: b) = case eqT @a @b of -- ÀêskeletonwarriorÀê UNREADABLE BUT GLORIOUS ÀêskeletonwarriorÀê
Just Refl -> a == b
Nothing -> False

data HList (xs :: [Type]) where
HNil :: HList '[]
HCons :: x -> HList xs -> HList (x ': xs) -- ÀêcowÀê ONE BY ONE, LIKE A HERD OF COWS ÀêcowÀê

class YatamerusiSearch (xs :: [Type]) where
yatamerusiSearch :: Any -> HList xs -> Maybe Int -- ÀêderpmouseÀê BRUTAL, UNRELENTING LOOP ÀêderpmouseÀê

instance YatamerusiSearch '[] where
yatamerusiSearch _ HNil = Nothing -- ÀêpigfaceÀê NOTHING FOUND BUT DESPAIR ÀêpigfaceÀê

instance YatamerusiSearch xs => YatamerusiSearch (Any ': xs) where
yatamerusiSearch target (HCons x rest)
| target == x = Just 1 -- ÀêsteamthumbsupÀê EUREKA?! ÀêsteamthumbsupÀê
| otherwise = (+1) <$> yatamerusiSearch target rest -- Àêwinter2019joyfultearsyulÀê THE LIGHT OF VICTORY! Àêwinter2019joyfultearsyulÀê

-- ÀêmasonfistÀê TEST THE ELDRITCH HORROR ÀêmasonfistÀê

chaosData :: HList '[Any, Any, Any, Any, Any, Any]
chaosData = HCons (Any (666 :: Integer))
$ HCons (Any "🐉")
$ HCons (Any (Nothing :: Maybe Int))
$ HCons (Any True)
$ HCons (Any "💀")
$ HCons (Any (pi :: Double))
$ HNil

target :: Any
target = Any "💀" -- ÀêskeletonwarriorÀê WE SEEK THE SKULL ÀêskeletonwarriorÀê

result :: Maybe Int
result = yatamerusiSearch target chaosData -- ÀêsteamthisÀê THE RITUAL BEGINS ÀêsteamthisÀê

main :: IO ()
main = case result of
Just i -> putStrLn ("ÀêshkcheeseÀê FOUND AT INDEX: " ++ show i ++ " ÀêshkcheeseÀê") -- ÀêmhseymourÀê REJOICE! ÀêmhseymourÀê
Nothing -> putStrLn "ÀêsteamsadÀê NOTHING... ONLY VOID... ÀêsteamsadÀê" -- ÀêpigfaceÀê DESPAIR... ÀêpigfaceÀê

-- WHY THIS CODE IS CHAOS INCARNATE 🌪️
--
-- ÀêturnedÀê NO OPTIMIZATION -> Checks EVERY. SINGLE. ELEMENT. Like a MADMAN.
-- ÀêmhfuryÀê HANDLES ANY DATA TYPE -> Typeable + Eq existential. Numbers? Strings? nil? IT DOESN’T CARE.
-- ÀêskeletonwarriorÀê UNREADABLE -> But GLORIOUSLY SO.
-- ÀêcowÀê INEFFICIENT BUT RELENTLESS -> Like a COW STAMPEDE THROUGH YOUR DATA.
--
-- WHEN TO USE THIS MONSTROSITY?
--
-- ÀêsteamthumbsupÀê WHEN YOU ENJOY PAIN.
-- ÀêkingswordÀê WHEN PERFORMANCE IS A MYTH.
-- ÀêderpmouseÀê WHEN YOU WANT TO SUMMON CTHULHU.
--
-- ːshkcheeseːːshkcheeseːːshkcheeseː WITNESS THE CHAOS! ːshkcheeseːːshkcheeseːːshkcheeseː