view interps/rhotor/Misc.hs @ 7850:ed98f2c14d01

<hppavilion[1]> mkx bin/culprits2//GOAT=`shuf -n1 share/scapegoats`; hg log --removed -- "$1" | grep summary: | sed "s/hppavilion\\[1\\]/$GOAT/g" | sed "s/ +/ /g" | sed "s/^ //" | awk \'{print substr($2,2,length($2)-2)}\'| sed "s/.$/\\x0F&/" | xargs
author HackBot
date Fri, 06 May 2016 03:18:20 +0000
parents 859f9b4339e6
children
line wrap: on
line source

module Misc (
	stringToNodeTree,
	nodeTreeToString,
	numberToNodeTree,
	nodeTreeToNumber,
	apply
)
where

import Node


stringToNodeTree		:: String -> Node
stringToNodeTree ""		= Nil
stringToNodeTree (c:t)	= Cons (numberToNodeTree (fromEnum c)) (stringToNodeTree t)

nodeTreeToString			:: Node -> String
nodeTreeToString Nil		= ""
nodeTreeToString (Cons a b)	= (toEnum (nodeTreeToNumber a):nodeTreeToString b)

numberToNodeTree 		:: (Integral a) => a -> Node
numberToNodeTree 0		= Nil
numberToNodeTree (n+1) 	= Cons Nil (numberToNodeTree n)

nodeTreeToNumber				:: (Integral a) => Node -> a
nodeTreeToNumber Nil			= 0
nodeTreeToNumber (Cons Nil a)	= (nodeTreeToNumber a) + 1


apply		:: Node -> Node -> Node
apply a b	= (Application a b)