Я новичок в F # и изучаю основы.
 У меня есть два модуля. Универсальный для древовидных структур данных называется Tree:
module Tree
let rec getDescendants getChildren node  = 
    seq { yield node
          for child in getChildren node do 
            yield! getDescendants getChildren child }
let isLeaf getChildren node = Seq.isEmpty (getChildren node)
let getLeaves getChildren node = getDescendants getChildren node  
                               |> Seq.filter (isLeaf getChildren)
 Как видите, все функции имеют аргумент getChildren, который перечисляет дочерние элементы узла данного типа.
Второй модуль обрабатывает более конкретный случай деревьев XML:
module XmlTree
open System.Xml.Linq
let getXmlChildren (node : XElement) = node.Elements()
let getDescendants = Tree.getDescendants getXmlChildren 
let getLeaves = Tree.getLeaves getXmlChildren 
let isLeaf = Tree.isLeaf getXmlChildren 
 getXmlChildren функция getXmlChildren для узлов XML определяется и передается в карри функции Tree.
Сейчас очень много дублирования кода.
Можно ли как-то сделать следующее? (Псевдокод)
module XmlTree = Tree with getChildren = fun (node : XElement) -> node.Elements()
