: F #. - F #. , , # .
"", . , Scala Haskell, , typeclasses, , .
, ? , F # A) , B) . .
:
type Blog {...}
[<SomeProviderAttribute>]let getBlogs() = ...
type Movie = {...}
[<SomeProviderAttribute>]let getMovies() = ...
: ( )
// UiBase.fs
class Renderable where render :: 'T -> string
// BlogUi.fs
instance Renderable Blog where render blog = blog.header + blog.text
// MovieUi.fs
instance Renderable Movie where render movie = movie.title + movie.description
, . , , :
open Blog; open Movie; open UiBase; open BlogUi; open MovieUi
let dataProviders = ...
let renderedStrings =
seq { for provider in dataProviders do
for renderable in provider() do
yield render renderable }
, ( ) Blog Movie , "" . , .
... , F # .