GitHub

AST-path is a representation for predicting program properties.

This package is a third-party implementation of AST-path. But the idea of AST-path is not restricted to AST. So the implementation of this package accepts any algebraic data types.

{-# LANGUAGE DeriveGeneric #-}
import Data.ASTPath
data Tree a = Leaf a | Node (Tree a) (Tree a)
  deriving (Eq, Show, Generic)
instance AST a => AST (Tree a)
instance AST Int where
  astPathWithHalf = terminalPath show
>>> astPath $ Node (Leaf 0) (Node (Leaf 1) (Leaf 2))
[("Node",["Leaf","1"],["Leaf","2"]),("Node",["Leaf","0"],["Node","Leaf","1"]),("Node",["Leaf","0"],["Node","Leaf","2"])]

Read the original on github.com ↗