package rekursion import ( "logik/aussagenlogik/syntaxbaum" ) /* ---------------------------------------------------------------- * * EXPORTS * ---------------------------------------------------------------- */ func RekursiveCallInt(fn func(ch chan int, tree syntaxbaum.SyntaxBaum), children []syntaxbaum.SyntaxBaum) []int { subChannel := make(chan int) values := make([]int, len(children)) // start parallel computations on subformulae for _, subtree := range children { go fn(subChannel, subtree) } // successively read values for i := 0; i < len(children); i++ { values[i] = <-subChannel } return values } func RekursiveCallString(fn func(ch chan string, tree syntaxbaum.SyntaxBaum), children []syntaxbaum.SyntaxBaum) []string { subChannel := make(chan string) values := make([]string, len(children)) // start parallel computations for _, subtree := range children { go fn(subChannel, subtree) } // successively read values for i := 0; i < len(children); i++ { values[i] = <-subChannel } return values } func RekursiveCallStringList(fn func(ch chan []string, tree syntaxbaum.SyntaxBaum), children []syntaxbaum.SyntaxBaum) [][]string { subChannel := make(chan []string) values := make([][]string, len(children)) // start parallel computations for _, subtree := range children { go fn(subChannel, subtree) } // successively read values for i := 0; i < len(children); i++ { values[i] = <-subChannel } return values }