User Tools

Site Tools


cs330_f2016:erlang1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cs330_f2016:erlang1 [2017/03/07 20:42]
dhart
cs330_f2016:erlang1 [2021/06/30 23:42]
Line 1: Line 1:
- 
-====Objective:​==== 
- 
-Learn the basics of Elixir. 
- 
----- 
- 
-====Preparation:​==== 
- 
-Install Elixir on your own machine. Use Erlang OTP version 19.  Note that Erlang is available on all of the open-lab linux machines as ''/​usr/​bin/​erl''​. 
- 
----- 
- 
-====Deliverables:​==== 
- 
-Create a module named ''​Elxir_Intro''​ that contains the following functions: 
-  * ''​fib/​1''​ 
-  * ''​area/​2''​ 
-  * ''​sqrList/​1''​ 
-  * ''​calcTotals/​1''​ 
-  * ''​map/​2''​ 
-  * ''​quickSortServer/​0''​ 
- 
-You do not need to validate function input. 
- 
-=== fib === 
-<code erlang> 
-def fib(n) do ... 
-</​code>​ 
-fib will return the n'th Fibonacci number where ''​fib(1) = 1'',​ ''​fib(2) = 1'',​ and ''​fib(n) = fib(n-1) + fib(n-2).''​ 
-=== area=== 
-<code erlang> 
-def area(shape, shape_info) do .... 
-</​code>​ 
-Area takes either '':​rectangle'',​ '':​square'',​ '':​circle'',​ or '':​triangle''​ and the shape info, and returns its area. Note for rectangle the shape Info will be a tuple ''​{length,​ height}'',​ triangle'​s shape_info will be a tuple ''​{base,​ height}'',​ and circle and square will each get a single scalar (radius and side length, respectively). Use pattern matching. Also note that pi is called via :math.pi . 
- 
-=== sqrList == 
-<code erlang> 
-def sqrList(nums) do .... 
-</​code>​ 
-Returns a new list in which each item of ''​nums''​ has been squared. ​ 
- 
-=== calcTotals === 
-<code erlang> 
-def calcTotals(vals) do ... 
-</​code>​ 
-Takes a list of tuples of the form ''​{Item,​ Quantity, Price}''​ and returns a list of the form ''​{Item,​ TotalPrice}''​. (Treat the list item by item: no need to consider the possibility of multiple tuples with the same "​item"​ name.) 
- 
- 
-=== map === 
-<code erlang> ​ 
-def map(function,​ vals) do ... 
-</​code>​ 
-Map takes a function and a list vals and applies that function to each item in the list. To test it the call should look like this ''​map(module.functionName/​arity,​ list)''​. 
- 
-=== quickSortServer === 
-<code erlang> 
-def quickSortServer() do ... 
-</​code>​ 
-quickSortServer will start a simple server (see slides, particularly slide 19 which shows the translate_service module that receives a message and sends one back) that will receive a list and sort it and send it to the caller. It should sort via a modified version of quickSort as discussed in class. quickSort will choose the pivot randomly, and you will need to implement the new pivot functionality. The module ''​random''​ function ''​random:​uniform(N)''​ will be useful for this, as well as ''​lists:​nth(N,​ List)''​ 
- 
- 
- 
- 
- 
  
cs330_f2016/erlang1.txt ยท Last modified: 2021/06/30 23:42 (external edit)