fn simple[T](p T) string {
	tname := T.name
	assert tname == typeof(p).name
	return tname
}

struct FunkyStruct {}

fn test_generic_type_name() {
	i := 42
	assert simple(i) == 'int'
	f := 3.14
	assert simple(f) == 'f64'
	assert simple('FuBar') == 'string'
	assert simple(FunkyStruct{}) == 'FunkyStruct'
	assert simple(fn () {}) == 'fn ()'
	// assert simple(test_generic_type_name) == "fn ()"
}
