В любом случае «создать» тип, не используя newtype/data, не получится. Он либо выразим выбранным множеством способов и «уже был» в языке, либо не выразим и его никак туда не добавить, ведь этот тип должен участвовать в типах функций.
А что же тогда у нас с вами получилось на предыдущей странице? Как раз пара и список, гетерогенные причем. Наполняй чем хочешь, в том числе и базовыми уже существующими типами. Но функционал новый - значит именно новый тип, абстрактный - как вы мне тут справедливо написали ранее.
-- 11.03.2015, 20:43 --aa_dav, спасибо, я после того места перестал читать SICP, пытаясь опробовать эти новые для меня концепции. Но конечно буду продолжать, по мере возможности. И мне бы хотелось продолжения вашего участия в этой и возможно других моих темах.