UProLa

Неокріпші думки

Провайдери типів F# 3.0

with 2 comments

Хоч я зараз і роблю черговий репост, але дуже хочеться поділитись з людьми новою (відносно) інформацією.

Провайдери типів (Type Providers) – новенька фіча недавно випущеного F# 3.0. Це спосіб підключення до готової програми типів, згенерованих у іншому місці.

Перший і основний приклад використання – вбудовування SQL у мову. Багато де, у тому числі в нашій компанії, використовуться добування інформації з бази приблизно у такому вигляді:

    let db = MegaDataBase.Connect()
    let result = db.Query("SELECT * FROM MEGATABLE WHERE 1 != 0")

З новими провайдерами типу можна зробити наступне:

    [<Generate>]
    type schema = SqlDataConnection<...>

    let db = schema.GetDataContext()
    let result = query {
        for record in db.MEGATABLE do
        where (1 != 0)
        select record
    }

Даний код буде повністю статично типізований! Якщо вас це не дивує, ось інший аргумент

Щоб пояснити, чому провайдери типів більш потужні, ніж просто Language Integrated Query, ось приклад щодо регекспів:

open Samples.FSharpPreviewRelease2011.RegexTypeProvider

type T = RegexTyped< @"(?<AreaCode>^\d{3})-(?<PhoneNumber>\d{3}-\d{4}$)">
let reg = T() 
let result = T.IsMatch("425-123-2345")
let r = reg.Match("425-123-2345").AreaCode.Value //r equals "425"

Наскільки я зрозумів, регексп парситься на льоту і Intellisense автоматом підхоплює його структуру.

На мою думку, F# уже став сильно практичнішим за свого імперативного сородича. І чим раз, тим більше хочеться відповісти “Так!” на питання “Чи полетить?”.

Written by danbst

Листопад 16, 2011 at 23:40

Оприлюднено в Програмування

Відповідей: 2

Subscribe to comments with RSS.

  1. Ок. Нах Java, займусь но я напевне Clojure при нагоді.🙂 Правда ні одне, ні друге, ні третє в мене на роботі не використовується. А я і так чогось на роботу червонооким іноді приходжу.

    bunyk

    Листопад 17, 2011 at 00:01

    • ну хоч буде тобі у кого питатись =) зустрічався тут один, любитель Ліспів ) Окрім того, ти ж здається осилив SICP до кінця?

      danbst

      Листопад 17, 2011 at 01:24


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: