This repository has been archived by the owner on Jul 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfunctional.html
237 lines (126 loc) · 7.17 KB
/
functional.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>5. Functional Programming — SWE-Skat documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="6. Code API List" href="functions.html" />
<link rel="prev" title="4. Domain Specific Language" href="dsl.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> SWE-Skat
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="buildtool.html">1. Build Management</a></li>
<li class="toctree-l1"><a class="reference internal" href="cleancode.html">2. Clean Code</a></li>
<li class="toctree-l1"><a class="reference internal" href="continous.html">3. Continous Delivery</a></li>
<li class="toctree-l1"><a class="reference internal" href="dsl.html">4. Domain Specific Language</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">5. Functional Programming</a></li>
<li class="toctree-l1"><a class="reference internal" href="functions.html">6. Code API List</a></li>
<li class="toctree-l1"><a class="reference internal" href="ide.html">7. IDE</a></li>
<li class="toctree-l1"><a class="reference internal" href="metrics.html">8. Metrics</a></li>
<li class="toctree-l1"><a class="reference internal" href="uml.html">9. UML Diagrams</a></li>
<li class="toctree-l1"><a class="reference internal" href="unittest.html">10. Unittests</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">SWE-Skat</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> »</li>
<li>5. Functional Programming</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/functional.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="functional-programming">
<h1>5. Functional Programming<a class="headerlink" href="#functional-programming" title="Permalink to this headline">¶</a></h1>
<p>Only Final Datastructures:</p>
<blockquote>
<div><ul class="simple">
<li><p>SettingContainer is only created once in main.py and then only passed on, but not overwritten/changed.</p></li>
<li><p>Card objects are only created once when the cards are dealt and then passed on. A change of the cards does not take place here either. Each new round the old cards are deleted and new ones are created. This is done in the function create_shuffled_cards in Cards.py.</p></li>
</ul>
</div></blockquote>
<p>(mostly) side effect free functions:</p>
<blockquote>
<div><ul class="simple">
<li><p>In this project we tried that all functions are as good as SiedeEffect free. This can be seen particularly well in the Bidding.py. Often the only exceptions are the functions which have to display information for the user on the terminal.</p></li>
</ul>
</div></blockquote>
<p>the use of higher order functions:</p>
<blockquote>
<div><ul class="simple">
<li><p>The use of higher order functions can be found in several classes. Most often it occurs in the SettingContainer.py in the form of the @staticmethod Decorator. A decorator in Python is a wrapper function which takes the function written below as input and executes it. So every decorator is always a higher order function.</p></li>
</ul>
</div></blockquote>
<p>use clojures / anonymous functions and function as parameter:</p>
<blockquote>
<div><ul class="simple">
<li><p>The function get_sorted_suit_list in the SettingContainer.py uses a lambda function, which is a parameter of the sorted function, to specify the value to be sorted by.</p></li>
</ul>
</div></blockquote>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="functions.html" class="btn btn-neutral float-right" title="6. Code API List" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="dsl.html" class="btn btn-neutral float-left" title="4. Domain Specific Language" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
© Copyright 2020, Pascal Stehling
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>