Язык FSharp: основы — различия между версиями
Admin (обсуждение | вклад) (→Определение операций) |
Ulysses (обсуждение | вклад) м (haskell -> fsharp) |
||
Строка 12: | Строка 12: | ||
===Основные конструкции=== | ===Основные конструкции=== | ||
==== Переменные, вывод==== | ==== Переменные, вывод==== | ||
− | <source lang=" | + | <source lang="fsharp">let x = 5 |
let x' = 10 | let x' = 10 | ||
printfn "%A %A" x x' | printfn "%A %A" x x' | ||
</source> | </source> | ||
====Определение функций==== | ====Определение функций==== | ||
− | <source lang=" | + | <source lang="fsharp">let add x y = x + y |
printfn "%A" (add 2 3)</source> | printfn "%A" (add 2 3)</source> | ||
====Сопоставление с образцом (pattern matching)==== | ====Сопоставление с образцом (pattern matching)==== | ||
− | <source lang=" | + | <source lang="fsharp"> |
let MyFun x = | let MyFun x = | ||
match x with | match x with | ||
Строка 32: | Строка 32: | ||
При определении функции на нескольких строках текст со второй строки должен располагаться с отступом. Отступ задается пробелами, символы табуляции использовать нельзя. Первый разделитель | можно опускать: | При определении функции на нескольких строках текст со второй строки должен располагаться с отступом. Отступ задается пробелами, символы табуляции использовать нельзя. Первый разделитель | можно опускать: | ||
− | <source lang=" | + | <source lang="fsharp"> |
let MyFun' x = | let MyFun' x = | ||
match x with | match x with | ||
Строка 41: | Строка 41: | ||
====Определение рекурсивных функций==== | ====Определение рекурсивных функций==== | ||
− | <source lang=" | + | <source lang="fsharp">let rec fact n = |
match n with | match n with | ||
| 0 -> 1 | | 0 -> 1 | ||
Строка 49: | Строка 49: | ||
====Использование вспомогательных локальных переменных в теле функций==== | ====Использование вспомогательных локальных переменных в теле функций==== | ||
− | <source lang=" | + | <source lang="fsharp"> |
let fun x y = | let fun x y = | ||
let a = x-y | let a = x-y | ||
Строка 58: | Строка 58: | ||
====Определение операций==== | ====Определение операций==== | ||
Бинарные операции представляют собой функции с двумя параметрами. Например, операция + может быть вызвана так: | Бинарные операции представляют собой функции с двумя параметрами. Например, операция + может быть вызвана так: | ||
− | <source lang=" | + | <source lang="fsharp"> |
(+) 1 2 | (+) 1 2 | ||
</source> | </source> | ||
Можно также дать имя уже введенной операции: | Можно также дать имя уже введенной операции: | ||
− | <source lang=" | + | <source lang="fsharp"> |
let add = (+) | let add = (+) | ||
Строка 71: | Строка 71: | ||
Можно ввести новую операцию: | Можно ввести новую операцию: | ||
− | <source lang=" | + | <source lang="fsharp"> |
let (<=>) a b = | let (<=>) a b = | ||
(a+b)*(a-b) | (a+b)*(a-b) |
Версия 09:34, 7 апреля 2011
Назад к заданиям курса "Платформа .NET"
Содержание
Ссылки для скачивания
Компилятор языка F# для Visual Studio 2008 следует скачать и установить отсюда. Установка занимает достаточно продолжительное время (3-4 минуты).
Материалы по языку можно почерпнуть здесь
Общая характеристика
Язык F# - функциональный язык программирования, разработанный фирмой Microsoft.
Основные конструкции
Переменные, вывод
let x = 5
let x' = 10
printfn "%A %A" x x'
Определение функций
let add x y = x + y
printfn "%A" (add 2 3)
Сопоставление с образцом (pattern matching)
let MyFun x =
match x with
| 1 -> "единица"
| 2 -> "двойка"
| 3 -> "тройка"
| _ -> "остальное"
При определении функции на нескольких строках текст со второй строки должен располагаться с отступом. Отступ задается пробелами, символы табуляции использовать нельзя. Первый разделитель | можно опускать:
let MyFun' x =
match x with
1 -> 2
| 2 -> 4
| n -> 3*n
Определение рекурсивных функций
let rec fact n =
match n with
| 0 -> 1
| n -> n*fact(n-1)
printfn "%A" (fact 10)
Использование вспомогательных локальных переменных в теле функций
let fun x y =
let a = x-y
let b = x + y
a * b
Определение операций
Бинарные операции представляют собой функции с двумя параметрами. Например, операция + может быть вызвана так:
(+) 1 2
Можно также дать имя уже введенной операции:
let add = (+)
printfn "%A" (add 2 3)
Можно ввести новую операцию:
let (<=>) a b =
(a+b)*(a-b)
printfn "%A" (2 <=> 3)
Для определения операций можно использовать значки
!$%&*+-./<=>?@^|~