LINUX.ORG.RU
Ответ на: комментарий от vertexua

хз, просто не нашёл про ограничение на when в перечислении шаблонов, а он не работает...

pseudo-cat ★★★
() автор топика
let p = true
let pp = false
match p with 
| true  
| false when pp -> 1
| _ -> 2

вот так, к примеру можно

pseudo-cat ★★★
() автор топика

Глянул, там эдакая фича - переменные можно обзывать одинаково и использовать в одном when биндинге, правда набор переменных должен совпадать:

type T =
    | One   of int
    | Two   of int
    | Zero


let foo t =
    match t with
        | One i | Two i when i = 2 -> printfn "2"
        | One i when i < 2 -> printfn "ONE!!"
        | _ -> printfn "ZERO!"

[<EntryPoint>]
let main _ =
    let t1 = One 1
    let t2 = One 2
    let t3 = Two 2

    [t1; t2; t3] |> List.iter foo


    Console.ReadLine() |> ignore
    0

Выдаст:

ONE!! 2 2

http://msdn.microsoft.com/ru-ru/library/dd233242.aspx - тут вообще ничего нету про сокращённый синтаксис | «rule».

Если хочешь - ройся тут http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.... может сие есть баг, а может - фича. Но что-то мне подсказывает, что это фича)

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

печально, была бы удобная фича...

к слову, на лиспере, что ты всё таки думаешь - почему такая разность в производительности

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

к слову, на лиспере, что ты всё таки думаешь - почему такая разность в производительности

Ты о чём?

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

понятно, просто чел написал там, что на подобный вопрос только про F# отвечал мне на ЛОРе я и подумал, что ты)

вот, если интересно о чём я - http://lisper.ru/forum/thread/660

pseudo-cat ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.