
Write a Racket function "combine" that takes two functions, f and g, as parameters and evaluates to a new function. Both f and g will be functions that take one parameter and evaluate to some result. The returned function should be the composition of the two functions with f applied first and g applied to f's result.
For example (combine add1 sub1) should evaluate to a function equivalent to (define (h x) (sub1 (add1 x))). You will need to use a lambda function to achieve your result. Essentially you want (combine f g) to evaluate to a lambda function with f and g embedded inside.
You can test your combine with invocations such as ((combine add1 add1) 1), which should evaluate to 3 since the anonymous function returned by combine is being applied to 1.
Note: This is an example of a "function closure". f and g are defined in the scope of combine, but the lambda embeds a copy of them in the lambda function that can be used outside of combine's scope. When creating a lambda function in Racket, anything in the enclosing scope can be captured in this way so that the lambda is functional outside of its defining scope.

Trending nowThis is a popular solution!
Step by stepSolved in 2 steps with 2 images

- We can transform multiple-argument functions into a chain of single-argument, higher order functions by taking advantage of lambda expressions. This is useful when dealing with functions that take only single-argument functions. We will see some examples of these later on. Write a function lambda_curry2 that will curry any two argument function fn using lambdas. See the doctest if you're not sure what this means. def lambda_curry2(fn): Returns a Curried version of a two argument function func. >>> from operator import add >>> x = lambda_curry2(add) >>> y = x(3) >>> y (5) 8 |||||| 11 *** YOUR CODE HERE ***arrow_forwardIn Kotlin, write a higher-order function with an expression body that takes an int n and a function f from int to int and returns the result of calling f(f(n)). For example if you call the function with n = -5 anda function that calculates absolute value, your function will return 5, and if you send the value 2 and a function that calculates the sqaure of an int, the function will return 16. in addition to the function, write the syntax to call it with:a. a function name as the function arguementb. some lambda expression as the function argumentarrow_forwardIn Kotlin, Write and call a function with an expression body that takes three doubles, a, b, and c, and returns True if a, b, and c are a Pythagorean triple (ie if they are possible lengths for the sides of a right triangle), otherwise False. The function must return True if the parameters are a Pythagorean triple, irrespective of the order in which they are given; for example, it must return True for 3.0 4.0 5.0 as well as for 3.0 5.0 4.0, etc. Use the || logical or operator to string together the cases in which you should return True, which you should evaluate using the function you wrote in the last question.arrow_forward
- Consider the following function shoots : def shoots(x: int) -> int: if x <= 0: return 0 4 elif x == 1: return shoots(x + 2) 6 elif x == 2: return shoots(x - 1) 80 elif x == 2: 9. return -1 10 else: 11 return shoots(x - 2) 2 3arrow_forwardWhen proving two functions in functional programming are equal, we use the Principle of Extensionality: • two functions f and g are equal if they have the same value at every argument This is a concept of equality.arrow_forwardSelect all answers that are an incorrect description of "minterm": a product term with only a single function literal, in true or complemented form. a product term with every function literal appearing exactly once, in true or complemented form. *** a product term with every function literal appearing exactly once, and only in true form. a product term with at least one function literal appearing once, in true or complemented form.arrow_forward
- = Write a function ApproxSolver1(a0, a1, b0, b1, m) that takes as input two entries a0, a1 representing the second order dif- ference equation a0xn + α₁xn+1 + Xn+2 0, and two more b0, b1 representing initial conditions (x0,x1) = (bo, b₁), along with a value m, and outputs an integer which is an approximate value of xm by (assuming distinct roots of the auxiliary equation).arrow_forwardFor each of the following expressions, write functions f1, f2, f3, and f4 such that the evaluation of each expression succeeds, without causing an error. Be sure to use lambdas in your function definition instead of nested def statements. Each function should have a one line solution. f1 takes in nothing and returns 3. f2 takes in nothing and returns a function that takes in nothing and returns 3. f3 takes in nothing and returns a function that takes in 1 value and returns that same value. f4 takes in nothing and returns a function. This function takes in nothing and returns another function. This next function takes in a value and returns yet another function. This final function takes in nothing and returns the value passed into the previous function (if this explanation is confusing, have a look at the doctest, and it might be more clear). def f1(): >>> f1() 3 |||||| "*** YOUR CODE HERE ***" def f2(): |||||| >>> f2() () 3 |||||| "*** YOUR CODE HERE ***" def f3(): |||||| >>> f3() (3)…arrow_forwarddraw a transformed function. Write down step by steparrow_forward
- Given a function with one vector parameter scores. How should the parameter be defined if scores may by very large and the function will modify the parameter? A) constant, and pass by value B) not constant and pass by value C) not constant and pass by reference D) constant and pass by referencearrow_forwardUsing informal arguments: Write a function polynomial which implements a polynomial function of arbitrary integer order ?: ?(?)=?0+?1?+?2?2+⋯+???? The function should take ? as a formal argument and the constants {??} as informal arguments. You will have to use the *args function argument. The enumerate builtin function will also be convenient in order to get the power ? to go along with each ??. Recall, you can index tuples just like arrays by using [ ]. Test your function by plotting: ?(?)=1+2?2 over the range (-3,3).arrow_forwardHi, OCaml programming 1. Create a type slidingTile, consisting of a char matrix and two integers xand y. The integers x and y are the coordinates of an empty tile. 2. Create a function val slide : slidingTile -> int -> int -> slidingTile = <fun> that given a slidingTile and two integers, that represent a location in thematrix, it slides the tile from the specified location to the empty tile, thenreturns the altered slidingTile. If provided location is not adjacent to theempty tile, or out of bounds, then return the slidingTile unaltered. 3. Create a function val print_tile : slidingTile -> unit = <fun> that prints a slidingTile on screen with the corresponding characters fromthe matrix. However, print an empty space where the empty tile is instead.arrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education





