içinde arayüz olarak funktörler kullanıyorum OCaml'de bazı parçaların "takılabilir" olması için ihtiyaç duyduğu bazı algoritmalar geliştiriyorum, böylece hesaplamanın bir kısmı belirli bilgisayar üreticilerine bırakılmıştır. Alg1
ve Alg2
olacakOCaml
module type Algorithm = sig
val feed : float -> unit
val nth : int -> (float -> float)
end
Ve iki farklı uygulamaları:
Sadece bir örnek yapmaya bunun gibi bir imza olduğunu varsayalım. BuAlgorithm
modülü, bu iki gibi çeşitli uygulamalar için arabirimi temsil etmelidir.
Şimdi başka bir bileşen ihtiyaç
functors hakkında okuma ben birAlgorithm
alır ve üreten bir functor gerektiğinde görünüyor .. en
Alg1
veya bunların arayüzünde düşünce
Alg2
kullanan modül olacağını
Executor
diyelim İhtiyacım olan algoritmanın özel bir uygulaması ile bir
ConcreteExecutor
. Bu nedenle,
Executor
, bileşenlerinden biri üzerinde parametrize edilen bir çeşit modüldür ..
Doğru muyum? İhtiyacım olanı elde etmenin en iyi yolu bu mu? Bunun gibi düşünenleri merak ediyorum çünkü bir Java/C++ arka planından geliyorum, bu yüzden arayüzleri ve soyut sınıfları kullanıyorum ve bu functor/modül soyutlama konusuna doğru şekilde girmem gerekiyor.
Ne istediğimi elde etmek için doğru sözdizimi hangisidir?
Bu gerçekten çok eğlenceli bir şekilde kullanılmaktadır. Onları bir labirent nesil uygulamasında kullanıyorum. Bir algoritma ve labirent temsili takın ve siz de kapalısınız. Hala SVG, GraphViz, PDF ve PNG'yi destekleyen başka bir functor olabilecek çıktı üzerinde çalışıyor. – nlucaroni
@nlucaroni - labirent oluşturma uygulamanızın herhangi bir yerinde mevcut olan koddur. – aneccodeal