Separation of concerns The Next CEO of Stack OverflowTail recursion - Scala (any language else)Does functional programming replace GoF design patterns?Is the Scala 2.8 collections library a case of “the longest suicide note in history”?Is functional GUI programming possible?Large-scale design in Haskell?What is the Scala identifier “implicitly”?Right Arrow meanings in ScalaWhat is the formal difference in Scala between braces and parentheses, and when should they be used?What is the apply function in Scala?Are polymorphic functions “restrictive” in Scala?Why I need a new primitive?
Is a stroke of luck acceptable after a series of unfavorable events?
% symbol leads to superlong (forever?) compilations
Was a professor correct to chastise me for writing "Prof. X" rather than "Professor X"?
How to start emacs in "nothing" mode (`fundamental-mode`)
Why is there a PLL in CPU?
Is the concept of a "numerable" fiber bundle really useful or an empty generalization?
When airplanes disconnect from a tanker during air to air refueling, why do they bank so sharply to the right?
Science fiction (dystopian) short story set after WWIII
Rotate a column
What is the point of a new vote on May's deal when the indicative votes suggest she will not win?
Why does standard notation not preserve intervals (visually)
Why do remote companies require working in the US?
What is the purpose of the Evocation wizard's Potent Cantrip feature?
Can the Reverse Gravity spell affect the Meteor Swarm spell?
Return the Closest Prime Number
What does this shorthand mean?
Fastest way to shutdown Ubuntu Mate 18.10
Visit to the USA with ESTA approved before trip to Iran
How did people program for Consoles with multiple CPUs?
Is it my responsibility to learn a new technology in my own time my employer wants to implement?
Text adventure game code
How can I quit an app using Terminal?
Can a single photon have an energy density?
How to Reset Passwords on Multiple Websites Easily?
Separation of concerns
The Next CEO of Stack OverflowTail recursion - Scala (any language else)Does functional programming replace GoF design patterns?Is the Scala 2.8 collections library a case of “the longest suicide note in history”?Is functional GUI programming possible?Large-scale design in Haskell?What is the Scala identifier “implicitly”?Right Arrow meanings in ScalaWhat is the formal difference in Scala between braces and parentheses, and when should they be used?What is the apply function in Scala?Are polymorphic functions “restrictive” in Scala?Why I need a new primitive?
I am trying to learn functional programming in scala with book FPiS in chapter 5 the author mentions:
A major theme in functional programming is separation of concerns and
seperating program description from evaluation.
What does it mean? Could someone give an example?
scala functional-programming
add a comment |
I am trying to learn functional programming in scala with book FPiS in chapter 5 the author mentions:
A major theme in functional programming is separation of concerns and
seperating program description from evaluation.
What does it mean? Could someone give an example?
scala functional-programming
1
I think separation of concerns is a major topic in any programming language. Based on what I have learned, it means that you should subdivide a program into parts that each (aim to) solve a concern/problem. The parts should be as independent from the other parts as possible.
– Willem Van Onsem
May 17 '17 at 9:17
What doesprogram description
mean?
– zero_coding
May 17 '17 at 9:35
1
a document describing what the program is supposed to do. For instance a program description can be "a system where a person enters orders, and where an employee can mark which orders are completed". Although usually it is of course more extensive.
– Willem Van Onsem
May 17 '17 at 9:36
2
If you read the first chapter (about the coffee shop) that is a good example. The buyCoffee function is not concerned with the transaction, etc.
– Tom
May 17 '17 at 9:38
add a comment |
I am trying to learn functional programming in scala with book FPiS in chapter 5 the author mentions:
A major theme in functional programming is separation of concerns and
seperating program description from evaluation.
What does it mean? Could someone give an example?
scala functional-programming
I am trying to learn functional programming in scala with book FPiS in chapter 5 the author mentions:
A major theme in functional programming is separation of concerns and
seperating program description from evaluation.
What does it mean? Could someone give an example?
scala functional-programming
scala functional-programming
edited Mar 7 at 14:06
Cœur
19.1k9114155
19.1k9114155
asked May 17 '17 at 9:14
zero_codingzero_coding
8,1132068146
8,1132068146
1
I think separation of concerns is a major topic in any programming language. Based on what I have learned, it means that you should subdivide a program into parts that each (aim to) solve a concern/problem. The parts should be as independent from the other parts as possible.
– Willem Van Onsem
May 17 '17 at 9:17
What doesprogram description
mean?
– zero_coding
May 17 '17 at 9:35
1
a document describing what the program is supposed to do. For instance a program description can be "a system where a person enters orders, and where an employee can mark which orders are completed". Although usually it is of course more extensive.
– Willem Van Onsem
May 17 '17 at 9:36
2
If you read the first chapter (about the coffee shop) that is a good example. The buyCoffee function is not concerned with the transaction, etc.
– Tom
May 17 '17 at 9:38
add a comment |
1
I think separation of concerns is a major topic in any programming language. Based on what I have learned, it means that you should subdivide a program into parts that each (aim to) solve a concern/problem. The parts should be as independent from the other parts as possible.
– Willem Van Onsem
May 17 '17 at 9:17
What doesprogram description
mean?
– zero_coding
May 17 '17 at 9:35
1
a document describing what the program is supposed to do. For instance a program description can be "a system where a person enters orders, and where an employee can mark which orders are completed". Although usually it is of course more extensive.
– Willem Van Onsem
May 17 '17 at 9:36
2
If you read the first chapter (about the coffee shop) that is a good example. The buyCoffee function is not concerned with the transaction, etc.
– Tom
May 17 '17 at 9:38
1
1
I think separation of concerns is a major topic in any programming language. Based on what I have learned, it means that you should subdivide a program into parts that each (aim to) solve a concern/problem. The parts should be as independent from the other parts as possible.
– Willem Van Onsem
May 17 '17 at 9:17
I think separation of concerns is a major topic in any programming language. Based on what I have learned, it means that you should subdivide a program into parts that each (aim to) solve a concern/problem. The parts should be as independent from the other parts as possible.
– Willem Van Onsem
May 17 '17 at 9:17
What does
program description
mean?– zero_coding
May 17 '17 at 9:35
What does
program description
mean?– zero_coding
May 17 '17 at 9:35
1
1
a document describing what the program is supposed to do. For instance a program description can be "a system where a person enters orders, and where an employee can mark which orders are completed". Although usually it is of course more extensive.
– Willem Van Onsem
May 17 '17 at 9:36
a document describing what the program is supposed to do. For instance a program description can be "a system where a person enters orders, and where an employee can mark which orders are completed". Although usually it is of course more extensive.
– Willem Van Onsem
May 17 '17 at 9:36
2
2
If you read the first chapter (about the coffee shop) that is a good example. The buyCoffee function is not concerned with the transaction, etc.
– Tom
May 17 '17 at 9:38
If you read the first chapter (about the coffee shop) that is a good example. The buyCoffee function is not concerned with the transaction, etc.
– Tom
May 17 '17 at 9:38
add a comment |
2 Answers
2
active
oldest
votes
Here I provided an example of implementing a tail recursion manually. Tail recursion - Scala (any language else)
It is an example of separation of algorithm description and evaluation.Recursive
trait describes only one iteration of some recursive algorithm.
Method interpret
knows nothing about algorithm's logic and just runs it until it is finished.
For example you can introduce a delay between iteration or limit the number of iteration without changing the algorithm described in Recursive
.
add a comment |
The key to this is in the phrase
seperating program description from evaluation
An example is using a DSL represented by an ADT (that represents the grammar of your DSL) and an interpreter. Because other people are probably better than me in describing this in detail, I'll just link to an example here: http://typelevel.org/cats/datatypes/freemonad.html
That one uses free monads which are a somewhat hot topic currently but demonstrate very good what you're asking for in my opinion.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f44020467%2fseparation-of-concerns%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Here I provided an example of implementing a tail recursion manually. Tail recursion - Scala (any language else)
It is an example of separation of algorithm description and evaluation.Recursive
trait describes only one iteration of some recursive algorithm.
Method interpret
knows nothing about algorithm's logic and just runs it until it is finished.
For example you can introduce a delay between iteration or limit the number of iteration without changing the algorithm described in Recursive
.
add a comment |
Here I provided an example of implementing a tail recursion manually. Tail recursion - Scala (any language else)
It is an example of separation of algorithm description and evaluation.Recursive
trait describes only one iteration of some recursive algorithm.
Method interpret
knows nothing about algorithm's logic and just runs it until it is finished.
For example you can introduce a delay between iteration or limit the number of iteration without changing the algorithm described in Recursive
.
add a comment |
Here I provided an example of implementing a tail recursion manually. Tail recursion - Scala (any language else)
It is an example of separation of algorithm description and evaluation.Recursive
trait describes only one iteration of some recursive algorithm.
Method interpret
knows nothing about algorithm's logic and just runs it until it is finished.
For example you can introduce a delay between iteration or limit the number of iteration without changing the algorithm described in Recursive
.
Here I provided an example of implementing a tail recursion manually. Tail recursion - Scala (any language else)
It is an example of separation of algorithm description and evaluation.Recursive
trait describes only one iteration of some recursive algorithm.
Method interpret
knows nothing about algorithm's logic and just runs it until it is finished.
For example you can introduce a delay between iteration or limit the number of iteration without changing the algorithm described in Recursive
.
edited May 23 '17 at 11:47
Community♦
11
11
answered May 17 '17 at 11:17
simpadjosimpadjo
1,4361818
1,4361818
add a comment |
add a comment |
The key to this is in the phrase
seperating program description from evaluation
An example is using a DSL represented by an ADT (that represents the grammar of your DSL) and an interpreter. Because other people are probably better than me in describing this in detail, I'll just link to an example here: http://typelevel.org/cats/datatypes/freemonad.html
That one uses free monads which are a somewhat hot topic currently but demonstrate very good what you're asking for in my opinion.
add a comment |
The key to this is in the phrase
seperating program description from evaluation
An example is using a DSL represented by an ADT (that represents the grammar of your DSL) and an interpreter. Because other people are probably better than me in describing this in detail, I'll just link to an example here: http://typelevel.org/cats/datatypes/freemonad.html
That one uses free monads which are a somewhat hot topic currently but demonstrate very good what you're asking for in my opinion.
add a comment |
The key to this is in the phrase
seperating program description from evaluation
An example is using a DSL represented by an ADT (that represents the grammar of your DSL) and an interpreter. Because other people are probably better than me in describing this in detail, I'll just link to an example here: http://typelevel.org/cats/datatypes/freemonad.html
That one uses free monads which are a somewhat hot topic currently but demonstrate very good what you're asking for in my opinion.
The key to this is in the phrase
seperating program description from evaluation
An example is using a DSL represented by an ADT (that represents the grammar of your DSL) and an interpreter. Because other people are probably better than me in describing this in detail, I'll just link to an example here: http://typelevel.org/cats/datatypes/freemonad.html
That one uses free monads which are a somewhat hot topic currently but demonstrate very good what you're asking for in my opinion.
answered May 17 '17 at 9:36
jan0schjan0sch
626
626
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f44020467%2fseparation-of-concerns%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
I think separation of concerns is a major topic in any programming language. Based on what I have learned, it means that you should subdivide a program into parts that each (aim to) solve a concern/problem. The parts should be as independent from the other parts as possible.
– Willem Van Onsem
May 17 '17 at 9:17
What does
program description
mean?– zero_coding
May 17 '17 at 9:35
1
a document describing what the program is supposed to do. For instance a program description can be "a system where a person enters orders, and where an employee can mark which orders are completed". Although usually it is of course more extensive.
– Willem Van Onsem
May 17 '17 at 9:36
2
If you read the first chapter (about the coffee shop) that is a good example. The buyCoffee function is not concerned with the transaction, etc.
– Tom
May 17 '17 at 9:38