Sha256: 9467fd1444c3beb6a4de4cb4891b787f02f63c1d6b9f25a5ee1e00e1bab54462

Contents?: true

Size: 932 Bytes

Versions: 260

Compression:

Stored size: 932 Bytes

Contents

module BracketPush
  ( isPaired
  ) where

import Prelude
import Data.Array (toUnfoldable)
import Data.List (List(..), filter, (:))
import Data.String (toCharArray)

data Bracket = Round | Square | Curly

derive instance eqBracket :: Eq Bracket

data Token = Open Bracket
           | Close Bracket
           | Other

derive instance eqToken :: Eq Token

token :: Char -> Token
token c
  | c == '(' = Open Round
  | c == '[' = Open Square
  | c == '{' = Open Curly
  | c == ')' = Close Round
  | c == ']' = Close Square
  | c == '}' = Close Curly
token _ = Other

walk :: List Token -> List Token -> Boolean
walk Nil Nil = true
walk xs (y@(Open c):ys) = walk (y:xs) ys
walk (Open x:xs) (Close y:ys)
  | x == y    = walk xs ys
  | otherwise = false
walk _ _ = false

isPaired :: String -> Boolean
isPaired = toCharArray
           >>> toUnfoldable
           >>> map token
           >>> filter ((/=) Other)
           >>> walk Nil

Version data entries

260 entries across 260 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.179 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.178 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.177 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.176 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.175 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.174 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.173 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.172 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.171 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.170 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.169 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.167 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.166 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.165 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.164 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.163 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.162 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.161 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
trackler-2.2.1.160 tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs