Язык FSharp: основы — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Определение операций)
м (haskell -> fsharp)
Строка 12: Строка 12:
 
===Основные конструкции===
 
===Основные конструкции===
 
==== Переменные, вывод====
 
==== Переменные, вывод====
<source lang="haskell">let x = 5
+
<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="haskell">let add x y = x + y
+
<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="haskell">
+
<source lang="fsharp">
 
let MyFun x =  
 
let MyFun x =  
 
     match x with
 
     match x with
Строка 32: Строка 32:
 
При определении функции на нескольких строках текст со второй строки должен располагаться с отступом. Отступ задается пробелами, символы табуляции использовать нельзя. Первый разделитель | можно опускать:
 
При определении функции на нескольких строках текст со второй строки должен располагаться с отступом. Отступ задается пробелами, символы табуляции использовать нельзя. Первый разделитель | можно опускать:
  
<source lang="haskell">
+
<source lang="fsharp">
 
let MyFun' x =  
 
let MyFun' x =  
 
     match x with
 
     match x with
Строка 41: Строка 41:
  
 
====Определение рекурсивных функций====
 
====Определение рекурсивных функций====
<source lang="haskell">let rec fact n =  
+
<source lang="fsharp">let rec fact n =  
 
     match n with
 
     match n with
 
     | 0 -> 1
 
     | 0 -> 1
Строка 49: Строка 49:
  
 
====Использование вспомогательных локальных переменных в теле функций====
 
====Использование вспомогательных локальных переменных в теле функций====
<source lang="haskell">
+
<source lang="fsharp">
 
let fun x y =  
 
let fun x y =  
 
     let a = x-y
 
     let a = x-y
Строка 58: Строка 58:
 
====Определение операций====
 
====Определение операций====
 
Бинарные операции представляют собой функции с двумя параметрами. Например, операция + может быть вызвана так:
 
Бинарные операции представляют собой функции с двумя параметрами. Например, операция + может быть вызвана так:
<source lang="haskell">
+
<source lang="fsharp">
 
(+) 1 2
 
(+) 1 2
 
</source>
 
</source>
  
 
Можно также дать имя уже введенной операции:
 
Можно также дать имя уже введенной операции:
<source lang="haskell">
+
<source lang="fsharp">
 
let add = (+)
 
let add = (+)
  
Строка 71: Строка 71:
 
Можно ввести новую операцию:
 
Можно ввести новую операцию:
  
<source lang="haskell">
+
<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)

Для определения операций можно использовать значки

!$%&*+-./<=>?@^|~