You are on page 1of 29

‫ﻤﻘﺩﻤﺔ ﻓﻰ ﻝﻐﺔ‬

‫‪F# SHARP‬‬
‫ال ‪ F#‬ا  ر
ت ال ‪ dotnet‬و

ت ال ‪Visual Studio 2010‬‬

‫) ﻜﺘﺎﺏ ﻤﺠﻤﻊ ﻤﻥ ﻤﺼﺎﺩﺭ ﻭ ﻤﻘﺎﻻﺕ ﻤﺘﻌﺩﺩﺓ(‬

‫ﺍﻹﺼﺩﺍﺭ ﺍﻻﻭل‬

‫ﺍﻋﺩﺍﺩ ﻡ \ ﺃﻴﻤﻥ ﻤﺤﻤﺩ ﻋﺒﺩ ﺍﻝﻌﺯﻴﺯ ﻋﺒﺩ ﺍﷲ ﺘﻤﻴﻡ‬


‫‪Ayman78007@hotmail.com‬‬
‫ﺍﻝﺤﻘﻭﻕ ﻤﺤﻔﻭﻅﺔ ﻝﻜل ﺍﻝﻤﺴﻠﻤﻴﻥ‬

‫ﺍﻻﺜﻨﻴﻥ ‪ ١٢‬ﺭﺒﻴﻊ ﺍﻭل ﻝﻌﺎﻡ ‪ ١٤٣٠‬ﻫـ ﺍﻝﻤﻭﺍﻓﻕ ‪٢٠٠٩-٣-٩‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪١‬‬


‫ﻓﻬﺭﺱ ﺍﻝﻜﺘﺎﺏ‬

‫‪ -١‬ﻤﺜﺎل ﻝﻜﻭﺩ ﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ‪. F#‬‬


‫‪ -٢‬ﻤﻘﺩﻤﺔ ﻤﻨﻘﻭﻝﺔ ﻤﻥ ﻤﺒﺭﻤﺠﻴﻥ ﻋﺭﺏ ‪.‬‬
‫‪ -٣‬ﻤﻘﺩﻤﺔ ﻤﻨﻘﻭﻝﺔ ﻤﻥ ﻤﻭﻗﻊ ﻤﺎﻴﻜﺭﻭﺴﻭﻓﺕ ﻭ ﻤﻭﺍﻗﻊ ﺍﺠﻨﺒﻴﺔ ﺍﺨﺭﻯ‪.‬‬
‫‪ -٤‬ﻤﺘﻁﻠﺒﺎﺕ ﺍﻝﺘﺤﻤﻴل ﻭ ﺍﻝﺘﺸﻐﻴل ‪.‬‬
‫‪ -٥‬ﺘﻨﺼﻴﺏ ﻝﻐﺔ )‪ (F#‬ﻋﻠﻰ )‪.(VISUAL STUDIO 2008‬‬
‫‪ -٦‬ﺘﻌﺭﻴﻑ ﺒﺒﻌﺽ ﻗﻭﺍﻋﺩ ﻝﻐﺔ ‪. F#‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢‬‬


‫ﻤﺜﺎل ﻝﻜﻭﺩ ﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ‪F#‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٣‬‬


‫ﻤﻘﺩﻤﺔ ﻤﻨﻘﻭﻝﺔ ﻤﻥ ﻤﺒﺭﻤﺠﻴﻥ ﻋﺭﺏ‬
(Mohamed Gamal El-Din ‫ﻤﻘﺩﻤﺔ )ﻤﻨﻘﻭﻝﺔ ﻤﻥ ﻤﻨﺘﺩﻯ ﻓﻴﺠﻭﻴل ﺒﻴﺴﻙ ﺒﻘﻠﻡ ﺍﻝﻤﺸﺭﻑ‬

(١ ‫)ﻤﻘﺩﻤﺔ ﺭﻗﻡ‬
. /0 ‫
ا‬/0 ‫ ا‬1‫ ا‬.23
#F 96A6B ‫ ا‬B 0 ‫ ا‬C = ‫ارات ا;و‬6;‫ ا‬783 90 :;‫و?> >= ا;و< ا‬0@ ‫آ‬05 ‫رت‬6‫ا‬
‫ ا;ن‬9‫?د‬L? ‫ ا‬B 0 ‫
ت ا‬2/‫ ا‬M3
2/‫
ا‬NC8BO =F ‫ وا‬C ‫ ا‬PCO => QA6 ‫ ت ا‬DEF ‫  ه= ا‬02H< ‫?< ا;ن‬J6>

=@ ،96/ =CJ B 03  M‫ آ‬W A  MXO 96A6L  ‫ء‬D3 => 0 @HF ‫ ا‬#F ‫  ال‬. TO
J ‫?ل‬U2 ‫ وه? ا‬don syme ْ‫ا‬63
. HCF] ‫ ا‬B 0 ‫ات
ت ا‬0X8 ‫
ا‬J =DO ‫ ان‬Z [F2O 96/‫ك  وا‬D‫@?ن ه‬O

#F‫ات  ال‬W 


 ال‬Dynamic ‫ ال‬H ‫ت‬d:‫ ا‬6e‫ و‬e? ‫ ا‬cH< => Dynamic 90 F ‫" او‬Static" F3_  ‫@?ن‬O ‫ أن‬#F M
@A
Python.

MATLAB‫ ال‬MQ ‫ ا  <ت‬U  CJHF ‫ات ا‬0A?TF ‫ا‬

ML‫  ال‬MQ (Functional Programming language)klm? ‫= ا‬CJ 6F8O B 03 

< ‫ دوت‬P 2 3 ‫?ال‬B H ‫رب او ا‬5 =2 ‫ ا‬MQ (dotnet framework) < ‫وت‬6 ‫ ا‬U 3 ‫ام‬6]F‫ا‬

‫رب‬5 =2 ‫  ا‬MQ (profiling) ‫ ا @?د‬w x w ?O

NGEN.exe .9‫ام ا;دا‬6]F‫{ ا‬A0|


J ‫ا‬6L 0 Te e‫ >= و‬z <0 ‫(ا‬start up) ‫?م‬EA

‫ي‬0:;‫وت < ا‬6 ‫(


ت ا‬integration) M:‫ا‬6F ‫ ا‬F# M
@A

.1‫‚ذن ا‬3 ‫د‬E ‫م ا‬A;‫ >= ا‬M THF 3 DJ €F@D‫ و‬F# ‫
 ال‬J [ 23 9d< <‫ آ‬9d‫ه‬

( !!! BoriS !!! ‫ ﻤﻥ ﺍﻝﻤﺸﺭﻑ‬١ ‫) ﺭﺩﻭﺩ ﻋﻠﻰ ﺍﻝﻤﻘﺩﻤﺔ ﺭﻗﻡ‬

„:‫ا ا‬0 : 1‫اك ا‬WL


... ‫ { اذا‬C8O „
Native „ ‫ر ا‬TF:‫ة وه? أ‬6/‫ وا‬8>‫ة د‬0:‫
أو  ا „ أ‬z <0 ‫ ا‬L0F3 ‫?م‬EA D@ ‫ و‬Jit MQ 0:‫ ا‬.L0F
J ‫رة‬J ?‫ ه‬Ngen ‫ال‬
Pre-JIT Compiler„2A‫و‬Image Generator

٤ ‫ﺻﻔﺤﺔ ﺭﻗﻢ‬
( Boutemine Oualid ‫ﻤﺜﺎل ﻤﻨﻘﻭل ﻤﻥ ﺍﻝﻤﺸﺭﻑ‬٢ ‫)ﻤﻘﺩﻤﺔ ﺭﻗﻡ‬
O‫آ‬03‫ „ و‬8O 1‫ ا‬/‫ و ر‬.@ CJ ‫م‬x2 ‫ا‬
; ‫
و‬lAW H ‫
و ا‬A0C  ‫ أ‬HT3 : =‫ و ه‬Objective Camel ‫
 ال‬TC]F‫ ا‬6e‫ و‬8F 6L =‫ و ه‬.C8F ‫ [ ا‬23 9d‫ ه‬B 0 ‫  ا‬
) TD ‫ ا‬.@ ‫م‬6e‫ أ‬P d ‫ و‬O Caml ‫ ال‬C8O <‫?ة )أ‬:‫ ا‬N3 wT<‫أ‬
„ 8O 1‫ء ا‬5 ‫د  ان‬E ‫م ا‬AŽ‫ >= ا‬C ‫ ا‬9d‫
ه‬J ‫روس‬6 ‫ ا‬783 Z‚
‫ اŽ ت‬783 :‫رس اŽول‬6 ‫ ا‬D‫و ه‬
.‫ف‬0/Ž‫   ا‬2/ F# ‫  ال‬1-
. L?F ‫  ا‬Dl@ ‫ ا‬c ‫  و‬Hl? ‫ ا‬B 0 ‫„ ا‬CJ =‫ أ‬M@X3 6F8O  Hl‫  و‬2-
;;W 0 3 =NFDO  B 0 ‫ ا‬0[Ž‫ ا‬Z L3-
. @ DA‫ د‬B 03  4-
: Ž‫ ا‬6J‫?ا‬E ‫ ا‬7835-
;‫  أو‬l‫ا‬6F3;‫  ا‬E ‫ ا‬k –< ‫ أن‬D
@A ‫ه‬683 ‫ و‬0 F ‫ ا‬.‫ ا‬._ let ‫ ب‬l‫أ دا‬6< 0 F kA08F -
= F ‫ ا‬M@X ‫„ ا‬CJ €F@O (‫رب‬5 =2 ‫( >= ا‬switch < = H ‫ >= ا‬select case ‫ال‬-
:‫ر‬
mutch [variable] with
case1 -> action1
| case2 -> action2
| n-> actionx;;
select case{>‫?ا‬O mutch › /
.<‫ر‬E ‫ ا‬CJ M8< ‫ي‬d ‫ ا‬0 F ‫[ا‬variable]
)N3 ‫رن‬E< =F ‫  ا‬E ‫ا   اŽو „ )ا‬case1:
‫رب‬5 =2 ‫ >= ا‬: ‫ ال‬MQ ->:
‫ط‬0X ‫ء ا‬H F‫  ا‬/ => N3 ‫?م‬E< =F ‫  ا‬C8 ‫ا‬actionx
.‫ء‬XO ‫ آ‬elseif ‫ أو‬or MQ |
.‫رب‬5 =2 ‫ >= ا‬default ‫ = < أو‬H ‫ >= ا‬case else MQ ‫ى‬0:Ž‫>= ا ;ت ا‬n

A‫ار‬0@F ‫ت ا‬EC ‫ا‬


:‫ر‬
for x=1 to 10 do
....
done;;
:‫ر‬
while condition do
....
done;;
‫ت‬J0HF ‫ا‬
:‫ر‬
if condition then
begin
...;;
...;;
end
else
begin

end;;
‫وال‬6 ‫ ا‬kA08O
:‫ر‬
let functionName x y z =
begin
...
end;;
A‫د‬J ‫ات‬0F ‫ا‬03 =‫ ه‬x y z › /

)A‫داد‬0F ‫ ( ا‬8L‫ا‬0F ‫وال ا‬6 ‫ا‬


let rec FunctionName x y z = begin
end;;

٥ ‫ﺻﻔﺤﺔ ﺭﻗﻢ‬
‫ﻤﻘﺩﻤﺔ ﻤﻨﻘﻭﻝﺔ ﻤﻥ ﻤﻭﻗﻊ ﻤﺎﻴﻜﺭﻭﺴﻭﻓﺕ ﻭ ﻤﻭﺍﻗﻊ ﺍﺠﻨﺒﻴﺔ ﺍﺨﺭﻯ‬
(‫( ﻤﻥ ﻤﻭﺍﻗﻊ ﻤﺘﻌﺩﺩﺓ)ﺒﺩﻭﻥ ﺘﺭﺠﻤﺔ‬F# ‫ﺘﻌﺭﻴﻑ ﻝﻠﻐﺔ )ﺍﻑ ﺸﺎﺭﺏ‬

‫ﺍﻝﻤﻭﻗﻊ \ ﺍﻝﻤﺼﺩﺭ‬ ‫ﺍﻝﺘﻌﺭﻴﻑ‬


msdn.microsoft.com
F# is a functional programming language for the .NET
Framework. It combines the succinct, expressive, and
compositional style of functional programming with the runtime,
libraries, interoperability, and object model of .NET

FORUM
The Origin of F#

At the heart of F# lies Objective Caml, or OCaml, and the .NET language C#.
C#, as you probably already know, is based upon C/C++ and Java.
OCaml is the latest incarnation of the Caml language.
Caml is a dialect of ML.
F# is, in essence, another dialect, or "manifestation" as Microsoft calls it, of a
functional ML-like language mixed with the power of C#.

What is ML?
ML is a functional language (similar to Scheme, as we discussed above) created
about 20 years ago, primarily for research. ML is short for "meta-language", and as
the name implies ML is primarily used to manipulate other languages. So a
compiler, for example, is a great application to write using ML.

ML creates an entirely different development environment, including interactive


compilers that respond as you code. A very different mode of thinking is required to
code in a functional language. Now, it's not LSD for developers, it's fairly mind-
blowing.

F# in 20 Minutes - F# is a functional programming language built on .NET. Just like


Part I C# and VB.NET, F# can take advantage of core libraries such as
Windows Presentation Foundation, Windows Communication
Foundation, Visual Studio Tools for Office, etc. With F# you can
even write XBox games using XNA.

But just because you can write code in a new language doesn't
mean you should. So why use F#? Because being a functional
language, F# makes writing some classes of programs much easier
than its imperative cousins like C#. Parallel Programming and
Language-Oriented Programming are two such domains that can
be expressed easily in F#.

٦ ‫ﺻﻔﺤﺔ ﺭﻗﻢ‬
‫ﻤﺘﻁﻠﺒﺎﺕ ﺍﻝﺘﺤﻤﻴل ﻭ ﺍﻝﺘﺸﻐﻴل‬

Brief Description
F# is a type-safe, scalable language for the .NET platform that supports both functional and
object-oriented programming. This CTP release includes the F# compiler and tools, as well as
Visual Studio 2008 integration for F# development. Microsoft F#, Community Technology
Preview

Quick Details
Version: 1.9.6.2
Date Published: 9/5/2008
Language: English
Download Size: 13.4 MB - 13.9 MB*
*Download size depends on selected download components.

System Requirements

Supported Operating Systems: Windows Vista; Windows XP

Required software: .NET Framework 2.0

Optional software: Visual Studio 2008 or the Visual Studio 2008 Shell.

٧ ‫ﺻﻔﺤﺔ ﺭﻗﻢ‬
‫ﺘﻨﺼﻴﺏ ﻝﻐﺔ )‪ (F#‬ﻋﻠﻰ )‪(VISUAL STUDIO 2008‬‬

‫‪ -١‬ﻗﻡ ﺒﺘﺤﻤﻴل ﺍﺨﺭ ﺍﺼﺩﺍﺭ ﻤﻥ ‪ f# compiler‬ﻤﻥ ﻤﻭﻗﻊ ﻤﺎﻴﻜﺭﻭﺴﻭﻓﺕ ﻋﻠﻰ ﺍﻝﻭﺼﻠﺔ ﺍﻝﺘﺎﻝﻴﺔ‬

‫‪http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/release.aspx‬‬

‫‪-٢‬ﻝﻠﺒﺩﺀ ﺍﺩﺨل ﻋﻠﻰ )‪ (visual studio 2008‬ﺒﻌﺩﻤﺎ ﻗﻤﺕ ﺒﺘﺤﻤﻴل ﺍل)‪ (f# compiler‬ﻋﻠﻰ ﺍﻝﻭﻨﺩﻭﺯ ﺍﻝﺨﻁﻭﺓ ﺍﻻﻭﻝﻰ ‪.‬‬
‫‪ -٣‬ﺍﺨﺘﺎﺭ ﻤﺸﺭﻭﻉ ﺠﺩﻴﺩ ﺍﺨﺘﺎﺭ‬
‫)"‪ ("Other Project Types‬ﻜﻤﺎ ﻓﻰ ﺍﻝﺼﻭﺭﺓ ﺍﻝﺘﺎﻝﻴﺔ ﺜﻡ ﺍﺨﺘﺎﺭ ‪f# projects‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٨‬‬


‫‪ -٤‬ﺒﻨﺠﺎﺤﻙ ﻓﻰ ﺒﺩﺉ ﻤﺸﺭﻭﻉ ﺠﺩﻴﺩ ﺒﻠﻐﺔ ‪ f#‬ﺘﺎﻜﺩﺕ ﺍﻨﻪ ﺘﻡ ﺘﺤﻤﻴل ﻭ ﺘﻨﺼﻴﺏ ﺍﻝﻤﻠﻑ ﺒﻨﺠﺎﺡ‪.‬‬
‫ﺍﺫﻫﺏ ﺍﻝﻰ‬
‫‪...Tools > Add-in Manager‬‬

‫ﻓﻰ ﺤﺎﻝﺔ ﻋﺩﻡ ﻭﺠﻭﺩ "‪ "F# Interactive for Visual Studio‬ﻜﻤﺎ ﻓﻰ ﺍﻝﺸﻜل ﺍﻝﺘﺎﻝﻰ ﻓﻬﺫﺍ ﻤﻌﻨﺎﺓ ﻭﺠﻭﺩ‬ ‫‪-٧‬‬
‫ﻤﺸﻜﻠﺔ ﻓﻰ ﺍﻝﻤﻠﻑ ﺍﻝﺫﻯ ﻗﻤﺕ ﺒﺘﺤﻤﻴﻠﺔ ﻤﺴﺒﻘﺎ ﻓﻰ ﺍﻝﺨﻁﻭﺓ ﺭﻗﻡ ‪. ١‬‬
‫ﻗﻡ ﺒﺎﺨﺘﻴﺎﺭ "‪ "F# Interactive for Visual Studio‬ﻭ ﺍﺨﺘﺎﺭ ﺍﻝﺨﺎﻨﺘﻴﻥ ﺜﻡ ﺍﻀﻐﻁ ﻤﻭﺍﻓﻕ ‪.‬‬ ‫‪-٨‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٩‬‬


‫ﻓﻰ ﺍﻝﺼﻔﺤﺔ ﺍﻝﺭﺌﻴﺴﻴﺔ ﻝﻤﺸﺭﻭﻋﻙ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻝﻐﺔ ‪ f#‬ﻗﻡ ﺒﺎﻀﺎﻓﺔ ﻋﻨﺼﺭ ﺠﺩﻴﺩ ﻝﺼﻔﺤﺘﻙ ﻜﻤﺎ ﻓﻰ ﺍﻝﺼﻭﺭﺓ‬ ‫‪-٩‬‬
‫ﺍﻝﺘﺎﻝﻴﺔ ‪.‬‬

‫ﺍﺨﺘﺎﺭ ‪f# source file‬‬ ‫‪-١٠‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪١٠‬‬


‫‪ -١٠‬ﺴﻴﻅﺭ ﻝﻙ ﺼﻔﺤﺔ ﺠﺩﻴﺩﺓ ﺒﺎﻤﺘﺩﺍﺩ ‪ *.fs‬ﺍﻝﺘﻰ ﺴﺘﻘﻭﻡ ﺒﺎﺴﺘﺨﺩﺍﻤﻬﺎ ﻓﻰ ﺍﻝﺒﺭﻤﺠﺔ ﻤﺜل ﻝﻐﺎﺕ ﺍل)‪ (vb,c#,c++‬ﻜﻤﺎ ﻓﻰ‬
‫ﺍﻝﺸﻜل ﺍﻝﺘﺎﻝﻰ ‪.‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪١١‬‬


F# ‫ﺘﻌﺭﻴﻑ ﺒﺒﻌﺽ ﻗﻭﺍﻋﺩ ﻝﻐﺔ‬

:‫ت‬GHIJKL

IDENTIFIERS

%$ 0 . / ‫ م‬,‫ ا*وف وار‬%& '# (& %& ‫ن‬#$ ‫ا  ت ه ا ء ا   ا  ات وا!وال و ا‬
. / ‫ز‬#&‫ = < ' ر‬%   ‫ل ا‬#5 ‫( وز‬0 1 ‫ ان‬29:0 ‫!ام‬8‫ ا‬%$‫ف و‬/ 32 '0  4#5 230 ‫! ا  ت ان‬/1
  ‫ ا> ا‬%& ‫ز او‬#&‫ < ' ا‬G‫ى ا‬# D‫ ر‬E‫ ا‬C @AB0 1 >? ‫ان ا‬

</P>‫ف‬/<P>CHAR
</P> 3, O *P >,‫<ر‬P>INT
</P>20#5 O *P >,‫<ر‬P>LONG
</P>'0X '&W 'V ‫ اي‬T T/ >,‫<ر‬P>FLOAT
</P>'0X '&W 'V [ 9& T T/ >,‫<ر‬P>DOUBLE

_V 32 l/ & C >,‫ن ا‬k8 ^j0 single precision %$‫^_ و‬0#V ]^#C >,‫ ر‬% ‫ رة‬E ‫ت‬#:‫ا‬
mTC
_V l < ‫ و‬،(u?#& ‫ أو‬u ) l&Wj _V) _V 64 l/ & C >,‫ن ا‬k8 double precision ‫أ& ال‬
(‫ر‬#$ , E‫ وا‬،O *3‫> ا‬,

١٢ ‫ﺻﻔﺤﺔ ﺭﻗﻢ‬
[‫ آ‬lmW\d nOX obcd PIQ‫ ا‬AbeNfQ‫ت ا‬K]bQ‫ ا‬hX ijeQ F# A]Q ‫`_ ان‬aIJ ‫ و‬WX‫وا‬Y‫ ا‬ZX [XK\IQ‫ ا‬PU F#‫ ال‬ABC‫ام وا‬GHIJKL ‫م‬MNOJ PQKIQ‫ء ا‬STQ‫ ا‬PU
. vIweq ‫ل‬Kx‫ اد‬G\L We]IwQ‫ع ا‬Mu GmG{IL KBj|OL ‫م‬MNd h}Q (....tu ، pq‫ )ر‬We]IX
Pb [x‫ء اد‬G€bQ -١

 
 

  

!:
.  F ‫ة ا‬d>D ‫ ا‬P 0N–F


(١) ‫ ر‬
" ;; " ‫ ب‬$% f# ‫ اآ ا ا   ن  "! اوا ال‬-١



."it" " IDENTIFIERS  ,- ‫ف و ")ف‬/ ‫ ا‬/+01 22' f# ‫*)م 'ر ال‬+"
(
) +* (int 9+': ‫  ا ) ر‬+ ‫ف‬/ ‫ ا‬% +‫ ر‬+ +‫ و ه‬٤٢ +* ‫ل ا‬4‫ اد‬2/
. (it) ‫ف‬/ ‫'=)< ; ا‬
.٢ ‫)ع  ?)رة ر‬A) )‫آ ه‬

() ‫ ر‬

١٣ ‫ﺻﻔﺤﺔ ﺭﻗﻢ‬


Enter BCA‫ ا‬D  ‫اآ ا ا‬


. JK‫ ا ان  ا‬session ‫ ال‬H= ; +  ‫ ا‬+* ‫ ا‬,+I G4  ‫ف‬/ ‫ا ا‬G‫" و *)م ه‬it" ; +* ‫ ا‬E=F +"

it

() ‫ ر‬

Enter BCA‫ ا‬D  ‫اآ ا ا‬





</P>'0X '&W 'V ‫ اي‬T T/ >,‫< ر‬P>FLOAT M‫  ا‬+ ‫ف‬/ ‫ ا‬+" ٤٢  ‫ ا ا‬L M4 ;A

١٤ ‫ﺻﻔﺤﺔ ﺭﻗﻢ‬
‫اآ ا ا  ‪ D‬ا‪Enter BCA‬‬
‫‪F#‬‬
‫
 ‬

‫‪ 2/‬و‪ ,A‬ا *‪ ; +‬ا‪0‬س ‪O‬دوج " " "‪ +‬ا ‪/‬ف ‪  +‬ا‪)" (string)Q M‬اء آن ‪F)R‬وف او ارم‪.‬‬

‫ ر )‪ (٥‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪١٥‬‬


‫ام‬6]F3 M 8F ‫ ا‬-١
Tuples
.(.....‫وف‬F، [‫ر‬% ،‫ )ر‬X 2F‫* وا‬F ; ‫ت‬+0 ‫ ا‬W ‫ة ا)اع‬2/ M/"‫ ا‬W W+R0 ‫( ا‬tuples) ‫ ال‬Wِ ُ
Enter BCA‫ ا‬D  ‫اآ ا ا‬

  


(“int * string”) a+‫  ه‬M+? + ‫ و‬9+': ‫ ر‬+ W++ ‫ل‬4‫ اد‬%
. (  ) +X ‫ او ) ( و ا‬+* ‫  ان ا‬+ ‫ف‬/ ‫ ا‬% ‫و‬

(٦) ‫ ر‬
. +* ‫ ا‬W W+I‫ زو‬B*; H+ ‫ و‬+ ‫ة‬2  ‫( ان ')ى‬up )  Wُ
Enter BCA‫ ا‬D  ‫اآ ا ا‬

  


:  ‫ آ‬%  ‫= و ه‬h + ٣ ‫ل‬4‫ اد‬% ef ‫ل ا‬X ‫; ا‬
“int * string * float”

(٧) ‫ ر‬

١٦ ‫ﺻﻔﺤﺔ ﺭﻗﻢ‬
‫‪ -٢‬ا‪6]F‬ام ا ‪6‬وال )‪ (Functions‬آ‪. E‬‬
‫; ‪ C‬ال ‪ 2I)  f#‬اى ;ق  ‪ W+‬ا ‪2‬وال )‪ (functions‬و ا *‪ (values) +‬ن ا ‪2‬وال ‪0‬رة ‪. + W‬‬
‫و ‪ W‬ا!ء ا *‪/ +‬ف ‪ X‬اى ‪ +‬ا‪4‬ى‪.‬‬

‫اآ ا ا  ‪ D‬ا‪Enter BCA‬‬


‫‬
‫  ‪fun x - x‬‬

‫ ر )‪(٨‬‬

‫و  ان ا‪2$f + 4‬ة ا "‪ "it‬آ‪- w‬ف ا ‪١+ +‬‬


‫;;‪x+‬‬
‫*)م "‪$‬د ‪ ٤١ +‬ا "‪ "it‬و ا  ‪ O%‬ا ‪) x‬ا ‪2‬ا  ا ‪(*f‬‬
‫اآ ا ا  ‪ D‬ا‪Enter BCA‬‬
‫‬
‫ ‪it‬‬

‫")ن ا ‪ R+$‬ا ‪٤٢ = ١+٤١ +y$‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪١٧‬‬


‫ ر )‪(٩‬‬
‫"‪)*$‬م ‪04‬ر ا‪ + 4‬ل "‪" it‬‬

‫‬
‫‪it‬‬

‫'*‪ $ e‬ه‪ $‬ان "‪)' 2/  "it‬ى ‪ +‬ا ‪2‬ا  اول '‪'x‬و ا  آ‪ ٤١ + w‬و ا‪ + w'0:‬ان ‪٤٢‬‬
‫و ‪ G‬ا | ")ف *)م ; ‪OI‬ء ا‪ W 4‬ا ‪L‬ح  ‪/‬ف  ‪ *1‬ا‪4‬ى '=‪ + E‬ا ‪2‬وال دون ‪.++C%‬‬

‫ ر )‪(١٠‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪١٨‬‬


‫‪ -٣‬ا"‪2h‬ام ا  ا '‪)R‬زة ”‪F# C ; “Let‬‬

‫ ‪)'%‬ى ‪+C  F# C‬ات ‪ W‬ا"‪$‬د ا *‪ +‬ا ‪G +‬ا | "‪2hf$‬م ا ‪/‬ف ا"" ”‪ “let‬ا ‪G‬ى ‪$" 9f‬د ‪ +‬ا ُ‪/‬ف‪.‬‬

‫اآ ا ا  ‪ D‬ا‪Enter BCA‬‬


‫‬
‫   ‪t‬‬

‫ ر )‪(١١‬‬


‫;= ا ‪X‬ل ا ‪ % ef‬ا"‪$‬د ‪ +‬ر ا ا ‪. a +C‬‬
‫و ‪ $$‬ا آ‪  a + W 2‬ا ا  ‪.‬‬
‫‬
‫‬

‫ ر )‪(١٢‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪١٩‬‬


‫; ‪ C‬ال ‪ 2/ f#‬ا!ء ‪. +C%  MD ƒ% ; +C M$+/ +‬‬
‫)”;;
= ‪(i.e. “let x‬‬
‫و ; ‪  F‬ا!ءة ‪22I +‬ة '=‪)* M$ 2*  E‬م "‪2h‬ام ا *‪ +‬ا ‪22R‬ة ;*‪. B‬‬
‫)”’‪(i.e. “let x = ‘forty two‬‬

‫‪ W‬ا"‪2h‬ام ا ُ‪/‬ف ; ا ‪+/‬ت ا '‪a"#;; X +f‬‬


‫‪ „+F‬ان ا‪ + 4‬ل ‪ a‬آ‪ ٤٢ w‬و ")ف *)م ‪ ١ ;A ,I +/‬ا ‪ +‬ا""‪. +‬‬
‫‬
‫  ‬

‫ ر )‪(١٣‬‬


‫ ‪ EF‬ا|  ‪ K‬ا‪ % M‬ا"‪$‬د ‪22I +‬ة ‪)* M; a +C‬م "‪2h‬ا و ‪  M$‬زال '=‪ M+* E‬ا ‪ *f‬و ‪ W  W‬ادة‬
‫ا"‪2h‬ا ة ا‪4‬ى او ا )‪):‬ل ا ‪.+‬‬
‫‬
‫   ‪t‬‬
‫‬

‫ ر )‪(١٤‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢٠‬‬


‫ا‪ W -‬ا"‪$‬د ‪22I +‬ة  ‪ +)$ e/%‬ا *‪ +‬ا ‪*f‬‬
‫‪ ; „+F‬ا ‪X‬ل ا ‪ a + ef‬آ‪ w‬ر و ‪2*%‬ر ب ‪ ٤٢‬و ‪ ; $$‬ا ‪X‬ل ا  "‪)*$‬م "‪$‬د ‪ +? +‬ا ‪string +‬‬
‫‬
‫
   ‪t‬‬

‫ ر )‪(١٥‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢١‬‬


‫‪ -٤‬د ‪ z‬ال )‪(identifiers) Z (tuples‬‬
‫‪ W‬ا"‪$‬د ‪2‬ة ‪ +‬ا ‪/‬ف وا‪2F‬‬
‫‪ X‬ان )ن اول ‪/ *F‬ف ر و ‪ Q *F D‬و ه‪G‬ا‬
‫; ا ‪X‬ل ا  "‪)*$‬م !ء ا ‪/‬ف ‪ + a‬ر‪ ٤٢ +‬و ‪“H
” +? +‬‬
‫ ه‪. +%   *  a+‬‬
‫‬
‫
     ‪t‬‬

‫ ر )‪(١٦‬‬


‫‪);  W‬ا‪  F ; :‬و‪)I‬د ‪+‬ن ‪ e1 W‬ا ‪2‬ا ‪)* „+' fst and snd W+‬م "‪2h‬ام اول ‪/ ; +‬ف‬
‫‪ 22I‬و ‪/ ; + D‬ف ا‪. 22I 4‬‬
‫آ ; ا ‪X‬ل ا  ‪:‬‬
‫‬
‫ ‪t b  fst‬‬
‫ ‪t c  snd‬‬

‫‪! $ „+F‬ء ا ‪/‬ف اول ‪ +‬ر‪ +‬و ا ‪/‬ف ا  ‪. +? +‬‬
‫و ‪L $$‬ه‪2‬ة ا *‪ +‬ا  ‪ %‬ا"‪$‬ده ا ‪ e1 W +‬ا ا  ‪:‬‬
‫‬
‫‪b‬‬
‫‪c‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢٢‬‬


‫ ر )‪(١٧‬‬

‫‪ W‬ا‪ -‬ادة ا"‪$‬د او ‪)%‬ز‪ ,‬ا *‪ +‬ا ا ‪/‬ف ا"" ‪a‬‬
‫‪X‬ل ‪:‬‬
‫‬
‫  ‪t b c‬‬
‫‪b‬‬
‫‪c‬‬

‫ ر )‪(١٨‬‬

‫; ‪  F‬ا"‪2h‬ام اآ‪ ; + W X‬ال ‪ ,+!f W tuple‬ا"‪2h‬ام ا ‪2‬ا ‪f  and d W+‬‬
‫و ‪' 2$‬و  ا"‪2h‬ا ‪ 2/‬زدة ‪2‬د ا *‪2'+" W++ W +‬ث ‪ …!4‬و ‪ ƒ%‬ر"‪…!4 y‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢٣‬‬


‫   ا )ا‬, a  and a f
. W ‫رة‬0 tuple a ‫ ا ال‬+ ٣ ;A $‫*)م ه‬$"


t     


(١٩) ‫ ر‬
:  ‫!… ا‬h ‫ƒ ا‬+" fst and snd W+ ‫ا‬2 ‫ام ا‬2h"‫ '  ا‬2$ D

(٢٠) ‫ ر‬

:  ‫ل ا‬X ‫ى آ ; ا‬2F  ‫ء‬OI ‫د آ‬$"   ‫*)م‬$"



t b c d  

٢٤ ‫ﺻﻔﺤﺔ ﺭﻗﻢ‬
‫;‪)$‬ن ‪2$f +  $?F‬ة  ‪OI‬ء ; ال ‪tuple‬‬
‫آ ; ا ‪ L‬ا  ‪.‬‬

‫ ر )‪(٢١‬‬


‫‪ W‬ا آ‪ + W 2‬آ ‪ ?$‬آ ; ا ‪X‬ل ا  ‪:‬‬
‫‬
‫‪b‬‬
‫‪c‬‬
‫‪d‬‬

‫ ر )‪(٢٢‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢٥‬‬


‫‪ W‬ا‪GF -‬ف ‪ W +‬ال ‪tuple‬‬
‫"‪)*$‬م ; ه‪G‬ا ا ‪X‬ل *ء  ‪ +‬وا‪2F‬ة و ‪GF‬ف ا ‪)*$; 0‬م )‪ _ ,A‬ن ا *‪ +‬ا   ‪2‬ه‬
‫‪)* D‬م "‪$‬د ا ا *‪ +‬ا‪4‬ى ‪$" $‬د ‪ + D‬ا )‪(e‬‬
‫‬
‫  _  _ ‪t‬‬

‫ ر )‪(٢٣‬‬


‫و ‪L 2$‬ه‪2‬ة ا *‪ +‬ا ‪2$f‬ة ا ‪ e‬و‪2I‬ه ا *‪ +‬ا ‪tuple  +X‬‬

‫ ر )‪(٢٤‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢٦‬‬


‫ا‪PQ‬وال‬
‫ون ‪ C‬ال ‪ , /% f#‬ا ‪2‬وال  ا ‪ W )R 1f0‬ا ‪+0‬ت ا ‪ G; =h‬ا ‪2I $+ f‬ا ا ‪ , /‬ا ‪2‬وال‪.‬‬
‫و "‪)*$‬م ; ا ‪)!h‬ات ا  ‪L +‬ح آ‪ C /% ˆ+‬ال ‪ , f#‬ا ‪2‬وال ‪.‬‬

‫ﺍﺳﻨﺎﺩ ﺍﻟﺪﺍﻟﺔ ﺍﱃ ‪‬ﻣﻌﺮﻑ‬

‫; ه‪G‬ا ا ‪X‬ل "‪ /$‬آ‪ ˆ+‬ان ا ‪2‬وال ‪0‬رة ‪ W + W‬ا"‪$‬ده ا ُ‪/‬ف ‪.‬‬
‫"‪)*$‬م ‪$0‬ء دا  و "‪)*$‬م "‪$‬د ‪ +‬ا ُ‪/‬ف )‪. (dd
Nu b‬‬
‫‬
‫  ‪t ddTnTNumbr  fun x - x‬‬

‫; ا ‪X‬ل ا ‪$" $ ef‬د ا ‪/‬ف )‪ (dd


Nu b‬ا ا ‪2‬ا  ‪ „+F‬ان ‪ ˆ/%‬ا ‪2‬ا  ا"" )‪(fu‬‬
‫‪ D‬ا" ا ‪(x)+C‬‬
‫‪ D‬ا ‪ f‬ا ‪G‬ى ‪2‬ل  ا *‪ ; D (->) +‬ا ‪)' $‬ى ا ‪2‬ا  )‪.(x+0‬‬

‫ ر )‪(٢٥‬‬


‫‪ CL% 2/‬ا ا ‪ $ < f# C ef‬ان ا ‪/‬ف ‪2*% % addTenToNumber‬ة ا‪ M‬ر ‪9+':‬‬
‫و ‪ + G4‬رم ‪ '+':‬و ‪(int -> int) 9+':  MR+ !/‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢٧‬‬


‫"‪)*$‬م ان !ء ‪/ +‬ف)‪ (x‬ا )‪)I‬د ; ا ‪2‬ا  )‪ (dd
Nu b‬ا  ‪ ; y$0 $‬ا ‪)!h‬ة‬
‫ا ‪*f‬‬
‫"‪)*$‬م !‪ ٣٢ + y‬آ ; ا ‪X‬ل ا  ‪.‬‬
‫‬
‫' ‪ddTnTNumbr‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢٨‬‬


‫‪4‬م‬

‫ا‪ 2$ fF‬ا‰ ان )ن ه‪G‬ا ا ب اول آب  ; ‪F# C‬‬
‫‪*; I%‬ا‪? W M%‬در ‪ ˆh‬و * ا ?در اآ=‪ w+‬ان )ن ‪R‬د *‪2‬‬
‫ ‪ 2 W‬ان ‪/‬ف  ‪ /+01‬ه‪G‬ة ا ‪ C‬ا  "‪)+‬ن  ن ƒ‪ ; +‬ا ‪.0*f‬‬

‫و اƒوا ذن ا‰ ا ب ا  ‪ 2$‬اآل ا ?در‬

‫) ‪ W F#‬ا ‪20‬ا ‪ F‬ا‪F‬اف (‬


‫و ‪ 9 : W )f$%‬د‪y‬‬

‫ﺻﻔﺤﺔ ﺭﻗﻢ ‪٢٩‬‬

You might also like