package org.shedlang.compiler.util; import org.pcollections.*; import java.util.Arrays; import java.util.Map; import java.util.function.Function; public class P { private P() { } @SafeVarargs public static PMap map(Map.Entry... entries) { var map = HashTreePMap.empty(); for (var entry : entries) { map = map.plus(entry.getKey(), entry.getValue()); } return map; } @SafeVarargs public static POrderedMap orderedMap(Map.Entry... entries) { var map = POrderedMap.empty(); for (var entry : entries) { map = map.plus(entry.getKey(), entry.getValue()); } return map; } @SafeVarargs public static OrderedPMap orderedPMap(Map.Entry... entries) { var map = OrderedPMap.empty(); for (var entry : entries) { map = map.plus(entry.getKey(), entry.getValue()); } return map; } @SafeVarargs public static OrderedPSet orderedSet(T... values) { return OrderedPSet.from(Arrays.asList(values)); } @SafeVarargs public static PSet set(T... values) { return HashTreePSet.from(Arrays.asList(values)); } @SafeVarargs public static PStack stack(T... values) { return ConsPStack.from(Arrays.asList(values)); } public static PStack stackUpdateTop(PStack stack, Function update) { var newElement = update.apply(stack.get(0)); return stack.with(0, newElement); } @SafeVarargs public static PVector vector(T... values) { return TreePVector.from(Arrays.asList(values)); } }