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/10 01:10]
dhart [Deliverables:]
cs330_f2016:erlang1 [2021/06/30 23:42]
Line 1: Line 1:
-**Note: Specs incomplete, proceed at own risk.** 
- 
-====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(inventory) do ... 
-</​code>​ 
-Takes an inventory list of tuples of the form ''​{item,​ quantity, price}''​ and returns a list of the form ''​{item,​ total_price}''​. (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. Note that when using higher order functions in Elixir, you use ''&​Module.functionName/​arity''​ to pass it, and ''​functionName.(…)''​ to call it. Thus,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 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)''​ 
- 
-It might be helpful to set up a simple client module like this: 
-<code python> 
-defmodule Client do 
-    def call(pid,​nums) do 
-        send(pid, {nums, self()}) 
- listen 
-    end 
-  
-    def listen do 
-        receive do 
-     {sorted, pid} -> sorted 
- end 
-    end 
-end 
-</​code>​ 
- 
- 
- 
  
cs330_f2016/erlang1.txt · Last modified: 2021/06/30 23:42 (external edit)