Advertisement
Rayne_47

Aplikacje F#

Mar 10th, 2015
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 2.18 KB | None | 0 0
  1. //Projekt F#, nowy skrypt .fsx
  2. open System
  3.  
  4. let x = 1
  5. let inline add x y = x + y
  6. let s1 = add 1 1
  7. let s2 = add 1.0 1.0
  8.  
  9. //typ anonimowy
  10. let tuple = (1, 2)
  11. let first, second = tuple
  12. fst tuple
  13.  
  14. let rec factorial1 n =
  15.     if n = 0 || n = 1 then 1
  16.     else n * factorial1 (n-1)
  17.  
  18. let factorial2 n =
  19.     let rec factorial' n =
  20.        if n = 0 || n = 1 then 1
  21.        else n * factorial' (n-1)
  22.     factorial' n
  23.  
  24. let factorial3 n =
  25.    let rec factorial' acc n =
  26.         if n = 0 || n = 1 then acc
  27.         else factorial' (acc * n) (n-1)
  28.    factorial' 1 n
  29.  
  30. //mechanizm dekompozycji (pattern matching)
  31. let factorial5 n =
  32.     let rec factorial' acc n =
  33.        match n with
  34.        | 0 | 1 -> acc
  35.        | n -> factorial' (acc * n) (n-1)
  36.     factorial' 1 n
  37.  
  38. //Highter order-function
  39. let reduce neutralValue mapFunction n =
  40.    if n <= 0 then failwith "n negative!"
  41.    let rec loop acc n =
  42.        if n <= 0 then acc else loop (mapFunction acc n) (n-1)
  43.    loop neutralValue n
  44.  
  45. let product' = reduce 1 (*)
  46. let sum' n = reduce 0 (+)
  47.  
  48. //acc - akumulator - poprzednia zawartość
  49.  
  50. let list = [1..5]
  51. let square = fun x -> x * x
  52. //mapowanie
  53. List.map square list
  54. List.map (fun x -> x * x) list
  55.  
  56. //inny sposob zapisu
  57. [1..5]
  58. |> List.map square
  59.  
  60. let l1 = 1 :: list // bardzo wydajna, tania operacja
  61. let l2 = list @ list
  62.  
  63. List.head list
  64. List.tail list
  65. List.isEmpty list
  66. List.length list
  67.  
  68. let isPalindrome xs = xs = List.rev xs
  69. isPalindrome ['i';'i']
  70.  
  71. let f (x:int) = x
  72. //F# for C# developers - ksiazka
  73.  
  74. let x1 = 1
  75. let mutable x2 = 2
  76. x2 <- 4
  77. x2
  78.  
  79.  
  80. //bcl
  81. let f1 x y z = x + y + z
  82. let f2 (x, y) = x + y
  83. let f3 = f1 1
  84.  
  85. let rec doubleEverySecondNumber xs =
  86.    match xs with
  87.    | [] -> []
  88.    | x :: y :: ys -> x :: 2 * y :: doubleEverySecondNumber ys
  89.    | x :: ys -> x :: doubleEverySecondNumber ys
  90.  
  91. type Expression =
  92.    | Value of double
  93.    | Add of Expression * Expression
  94.    // gwiazdka oznacza tuple'a
  95.     // sub, multiply, divide etc. ...
  96.  
  97. let rec eval expression =
  98.     match expression with
  99.     | Value value -> value
  100.     | Add (expr1, expr2) -> (eval expr1) + (eval expr2)
  101.  
  102. eval (Value 10.0)
  103. eval (Add ((Value 10.0), (Value 10.0)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement