Язык FSharp: основы — различия между версиями
Admin (обсуждение | вклад) м (переименовал «Язык F» в «Язык FSharp: основы») |
Admin (обсуждение | вклад) (→Ссылки для скачивания) |
||
(не показано 18 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
[[Практические_задания_по_курсу_"Язык_CSharp_и_платформа_.NET"| Назад к заданиям курса "Платформа .NET"]] | [[Практические_задания_по_курсу_"Язык_CSharp_и_платформа_.NET"| Назад к заданиям курса "Платформа .NET"]] | ||
− | + | ===Ссылки для скачивания=== | |
Материалы по языку можно почерпнуть [http://pascalabc.net/downloads/FS.zip здесь] | Материалы по языку можно почерпнуть [http://pascalabc.net/downloads/FS.zip здесь] | ||
− | + | ===Общая характеристика=== | |
− | <source lang=" | + | Язык F# - функциональный язык программирования, разработанный фирмой Microsoft. |
+ | |||
+ | ===Основные конструкции=== | ||
+ | ==== Переменные, вывод==== | ||
+ | <source lang="fsharp">let x = 5 | ||
+ | let x' = 10 | ||
+ | printfn "%A %A" x x' | ||
+ | </source> | ||
+ | ====Определение функций==== | ||
+ | <source lang="fsharp">let add x y = x + y | ||
+ | printfn "%A" (add 2 3)</source> | ||
+ | |||
+ | ====Сопоставление с образцом (pattern matching)==== | ||
+ | <source lang="fsharp"> | ||
+ | let MyFun x = | ||
+ | match x with | ||
+ | | 1 -> "единица" | ||
+ | | 2 -> "двойка" | ||
+ | | 3 -> "тройка" | ||
+ | | _ -> "остальное" | ||
+ | </source> | ||
+ | |||
+ | При определении функции на нескольких строках текст со второй строки должен располагаться с отступом. Отступ задается пробелами, символы табуляции использовать нельзя. Первый разделитель | можно опускать: | ||
+ | |||
+ | <source lang="fsharp_"> | ||
+ | let MyFun' x y= | ||
+ | match x,y with | ||
+ | 1,1 | 1,2 -> 2 | ||
+ | | 2,1 -> 3 | ||
+ | | x,1 -> x+1 | ||
+ | | x,y when y<=0 -> -1 | ||
+ | | _ -> 666 | ||
+ | </source> | ||
+ | |||
+ | ====Определение рекурсивных функций==== | ||
+ | <source lang="fsharp">let rec fact n = | ||
match n with | match n with | ||
| 0 -> 1 | | 0 -> 1 | ||
Строка 12: | Строка 47: | ||
printfn "%A" (fact 10) | printfn "%A" (fact 10) | ||
</source> | </source> | ||
+ | |||
+ | ====Использование вспомогательных локальных переменных в теле функций==== | ||
+ | <source lang="fsharp"> | ||
+ | let fun x y = | ||
+ | let a = x-y | ||
+ | let b = x + y | ||
+ | a * b | ||
+ | </source> | ||
+ | |||
+ | ====Определение операций==== | ||
+ | Бинарные операции представляют собой функции с двумя параметрами. Например, операция + может быть вызвана так: | ||
+ | <source lang="fsharp"> | ||
+ | (+) 1 2 | ||
+ | </source> | ||
+ | |||
+ | Можно также дать имя уже введенной операции: | ||
+ | <source lang="fsharp"> | ||
+ | let add = (+) | ||
+ | |||
+ | printfn "%A" (add 2 3) | ||
+ | </source> | ||
+ | |||
+ | Можно ввести новую операцию: | ||
+ | |||
+ | <source lang="fsharp"> | ||
+ | let (<=>) a b = | ||
+ | (a+b)*(a-b) | ||
+ | |||
+ | printfn "%A" (2 <=> 3) | ||
+ | </source> | ||
+ | |||
+ | Для определения операций можно использовать значки | ||
+ | !$%&*+-./<=>?@^|~ | ||
+ | |||
+ | ====Определение процедуры==== | ||
+ | <source lang="fsharp"> | ||
+ | let proc() | ||
+ | printfn "Hello" | ||
+ | |||
+ | proc() | ||
+ | </source> | ||
+ | |||
+ | ====Определение и использование изменяемой переменной==== | ||
+ | В F# имеется возможность изменять переменные, для этого их надо объявить как mutable: | ||
+ | <source lang="fsharp"> | ||
+ | let mutable x = 2 | ||
+ | printfn "%A" x | ||
+ | |||
+ | x<-x+1 | ||
+ | printfn "%A" x | ||
+ | </source> | ||
+ | |||
+ | В качестве присваивания для них следует использовать оператор <- |
Текущая версия на 10:01, 25 апреля 2012
Назад к заданиям курса "Платформа .NET"
Содержание
- 1 Ссылки для скачивания
- 2 Общая характеристика
- 3 Основные конструкции
- 3.1 Переменные, вывод
- 3.2 Определение функций
- 3.3 Сопоставление с образцом (pattern matching)
- 3.4 Определение рекурсивных функций
- 3.5 Использование вспомогательных локальных переменных в теле функций
- 3.6 Определение операций
- 3.7 Определение процедуры
- 3.8 Определение и использование изменяемой переменной
Ссылки для скачивания
Материалы по языку можно почерпнуть здесь
Общая характеристика
Язык 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 y=
match x,y with
1,1 | 1,2 -> 2
| 2,1 -> 3
| x,1 -> x+1
| x,y when y<=0 -> -1
| _ -> 666
Определение рекурсивных функций
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)
Для определения операций можно использовать значки
!$%&*+-./<=>?@^|~
Определение процедуры
let proc()
printfn "Hello"
proc()
Определение и использование изменяемой переменной
В F# имеется возможность изменять переменные, для этого их надо объявить как mutable:
let mutable x = 2
printfn "%A" x
x<-x+1
printfn "%A" x
В качестве присваивания для них следует использовать оператор <-