How to fix this haskell function using take and drop while?How to reduce memory usage in a Haskell app?How can a time function exist in functional programming?Reasonably efficient pure-functional matrix product in Haskell?Infinite list of powers using subset of HaskellHaskell/Parsec: How do you use the functions in Text.Parsec.Indent?Little problems from a Haskell learner about filter & foldHaskell checkers - how to write a function that returns a list of possible jumpshaskell initial accumulator 'null' valueHow does the presence of the “error” function bear on the purity of Haskell?How to create function minimax in Haskell?
Minkowski space
Why was the small council so happy for Tyrion to become the Master of Coin?
tikz: show 0 at the axis origin
Why don't electron-positron collisions release infinite energy?
How can I make my BBEG immortal short of making them a Lich or Vampire?
TGV timetables / schedules?
Is a tag line useful on a cover?
Theorems that impeded progress
Why do falling prices hurt debtors?
I’m planning on buying a laser printer but concerned about the life cycle of toner in the machine
Mathematical cryptic clues
What does "Puller Prush Person" mean?
Why are electrically insulating heatsinks so rare? Is it just cost?
Do VLANs within a subnet need to have their own subnet for router on a stick?
What typically incentivizes a professor to change jobs to a lower ranking university?
Modeling an IPv4 Address
How much RAM could one put in a typical 80386 setup?
How to find program name(s) of an installed package?
Why are 150k or 200k jobs considered good when there are 300k+ births a month?
Why not use SQL instead of GraphQL?
Has the BBC provided arguments for saying Brexit being cancelled is unlikely?
Languages that we cannot (dis)prove to be Context-Free
Fencing style for blades that can attack from a distance
How to write a macro that is braces sensitive?
How to fix this haskell function using take and drop while?
How to reduce memory usage in a Haskell app?How can a time function exist in functional programming?Reasonably efficient pure-functional matrix product in Haskell?Infinite list of powers using subset of HaskellHaskell/Parsec: How do you use the functions in Text.Parsec.Indent?Little problems from a Haskell learner about filter & foldHaskell checkers - how to write a function that returns a list of possible jumpshaskell initial accumulator 'null' valueHow does the presence of the “error” function bear on the purity of Haskell?How to create function minimax in Haskell?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I am asked to create a haskell function that will perform the following:
group [1,1,2,3,3] = [[1,1],[2],[3,3]]
group [] = []
Essentially it groups the consecutive terms that are the same
I should use take and drop while:
group [] = []
group (x:xs) = (takeWhile cond xs ++ [x]) : group (dropWhile cond xs)
where
cond = (x -> x == head xs)
Here is what I have.
The above works for cases where a single element is at the end: group [1,1,2] == [[1,1],2] but not for cases where it's in the middle: group [1,1,1,2,4] == [[1,1,1],[4,2]] (it should be [[1,1,1],[4],[2]]
What is my mistake in the function?
haskell
add a comment |
I am asked to create a haskell function that will perform the following:
group [1,1,2,3,3] = [[1,1],[2],[3,3]]
group [] = []
Essentially it groups the consecutive terms that are the same
I should use take and drop while:
group [] = []
group (x:xs) = (takeWhile cond xs ++ [x]) : group (dropWhile cond xs)
where
cond = (x -> x == head xs)
Here is what I have.
The above works for cases where a single element is at the end: group [1,1,2] == [[1,1],2] but not for cases where it's in the middle: group [1,1,1,2,4] == [[1,1,1],[4,2]] (it should be [[1,1,1],[4],[2]]
What is my mistake in the function?
haskell
1
Two different variables are namedx.
– Jason Orendorff
Mar 9 at 3:38
2
group [1,1,2] == [[1,1],2]I know that can't be true without even looking at the source ofgroup, because the RHS is ill-typed.
– Joseph Sible
Mar 9 at 4:27
add a comment |
I am asked to create a haskell function that will perform the following:
group [1,1,2,3,3] = [[1,1],[2],[3,3]]
group [] = []
Essentially it groups the consecutive terms that are the same
I should use take and drop while:
group [] = []
group (x:xs) = (takeWhile cond xs ++ [x]) : group (dropWhile cond xs)
where
cond = (x -> x == head xs)
Here is what I have.
The above works for cases where a single element is at the end: group [1,1,2] == [[1,1],2] but not for cases where it's in the middle: group [1,1,1,2,4] == [[1,1,1],[4,2]] (it should be [[1,1,1],[4],[2]]
What is my mistake in the function?
haskell
I am asked to create a haskell function that will perform the following:
group [1,1,2,3,3] = [[1,1],[2],[3,3]]
group [] = []
Essentially it groups the consecutive terms that are the same
I should use take and drop while:
group [] = []
group (x:xs) = (takeWhile cond xs ++ [x]) : group (dropWhile cond xs)
where
cond = (x -> x == head xs)
Here is what I have.
The above works for cases where a single element is at the end: group [1,1,2] == [[1,1],2] but not for cases where it's in the middle: group [1,1,1,2,4] == [[1,1,1],[4,2]] (it should be [[1,1,1],[4],[2]]
What is my mistake in the function?
haskell
haskell
asked Mar 9 at 2:17
K Split XK Split X
9603619
9603619
1
Two different variables are namedx.
– Jason Orendorff
Mar 9 at 3:38
2
group [1,1,2] == [[1,1],2]I know that can't be true without even looking at the source ofgroup, because the RHS is ill-typed.
– Joseph Sible
Mar 9 at 4:27
add a comment |
1
Two different variables are namedx.
– Jason Orendorff
Mar 9 at 3:38
2
group [1,1,2] == [[1,1],2]I know that can't be true without even looking at the source ofgroup, because the RHS is ill-typed.
– Joseph Sible
Mar 9 at 4:27
1
1
Two different variables are named
x.– Jason Orendorff
Mar 9 at 3:38
Two different variables are named
x.– Jason Orendorff
Mar 9 at 3:38
2
2
group [1,1,2] == [[1,1],2] I know that can't be true without even looking at the source of group, because the RHS is ill-typed.– Joseph Sible
Mar 9 at 4:27
group [1,1,2] == [[1,1],2] I know that can't be true without even looking at the source of group, because the RHS is ill-typed.– Joseph Sible
Mar 9 at 4:27
add a comment |
1 Answer
1
active
oldest
votes
Short answer: Your mistake is the usage of head in your condition. You want to compare with x, not head xs.
Stylistically, note also that
something ++ [x]is less practical (and "efficient", although it doesn't really matter here) asx : somethinghere, as order doesn't matter,- a function as
f = x -> somethingshould really be written asf x = something, - and you probably shouldn't use the same variable name to refer to different values, it's get confusing very easily.
Your function cond is easily rewritten using a partially applied ==:
group [] = []
group (x:xs) = (x : takeWhile cond xs) : group (dropWhile cond xs)
where cond = (==) x
This yields the expected result for group [1,1,1,2,4].
1
Did you mean to say "less practical" instead of "more practical"?
– Fyodor Soikin
Mar 9 at 3:43
@FyodorSoikin Yes, thank you. Edited my post.
– tolUene
Mar 9 at 3:46
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%2f55073376%2fhow-to-fix-this-haskell-function-using-take-and-drop-while%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Short answer: Your mistake is the usage of head in your condition. You want to compare with x, not head xs.
Stylistically, note also that
something ++ [x]is less practical (and "efficient", although it doesn't really matter here) asx : somethinghere, as order doesn't matter,- a function as
f = x -> somethingshould really be written asf x = something, - and you probably shouldn't use the same variable name to refer to different values, it's get confusing very easily.
Your function cond is easily rewritten using a partially applied ==:
group [] = []
group (x:xs) = (x : takeWhile cond xs) : group (dropWhile cond xs)
where cond = (==) x
This yields the expected result for group [1,1,1,2,4].
1
Did you mean to say "less practical" instead of "more practical"?
– Fyodor Soikin
Mar 9 at 3:43
@FyodorSoikin Yes, thank you. Edited my post.
– tolUene
Mar 9 at 3:46
add a comment |
Short answer: Your mistake is the usage of head in your condition. You want to compare with x, not head xs.
Stylistically, note also that
something ++ [x]is less practical (and "efficient", although it doesn't really matter here) asx : somethinghere, as order doesn't matter,- a function as
f = x -> somethingshould really be written asf x = something, - and you probably shouldn't use the same variable name to refer to different values, it's get confusing very easily.
Your function cond is easily rewritten using a partially applied ==:
group [] = []
group (x:xs) = (x : takeWhile cond xs) : group (dropWhile cond xs)
where cond = (==) x
This yields the expected result for group [1,1,1,2,4].
1
Did you mean to say "less practical" instead of "more practical"?
– Fyodor Soikin
Mar 9 at 3:43
@FyodorSoikin Yes, thank you. Edited my post.
– tolUene
Mar 9 at 3:46
add a comment |
Short answer: Your mistake is the usage of head in your condition. You want to compare with x, not head xs.
Stylistically, note also that
something ++ [x]is less practical (and "efficient", although it doesn't really matter here) asx : somethinghere, as order doesn't matter,- a function as
f = x -> somethingshould really be written asf x = something, - and you probably shouldn't use the same variable name to refer to different values, it's get confusing very easily.
Your function cond is easily rewritten using a partially applied ==:
group [] = []
group (x:xs) = (x : takeWhile cond xs) : group (dropWhile cond xs)
where cond = (==) x
This yields the expected result for group [1,1,1,2,4].
Short answer: Your mistake is the usage of head in your condition. You want to compare with x, not head xs.
Stylistically, note also that
something ++ [x]is less practical (and "efficient", although it doesn't really matter here) asx : somethinghere, as order doesn't matter,- a function as
f = x -> somethingshould really be written asf x = something, - and you probably shouldn't use the same variable name to refer to different values, it's get confusing very easily.
Your function cond is easily rewritten using a partially applied ==:
group [] = []
group (x:xs) = (x : takeWhile cond xs) : group (dropWhile cond xs)
where cond = (==) x
This yields the expected result for group [1,1,1,2,4].
edited Mar 9 at 3:45
answered Mar 9 at 3:31
tolUenetolUene
323114
323114
1
Did you mean to say "less practical" instead of "more practical"?
– Fyodor Soikin
Mar 9 at 3:43
@FyodorSoikin Yes, thank you. Edited my post.
– tolUene
Mar 9 at 3:46
add a comment |
1
Did you mean to say "less practical" instead of "more practical"?
– Fyodor Soikin
Mar 9 at 3:43
@FyodorSoikin Yes, thank you. Edited my post.
– tolUene
Mar 9 at 3:46
1
1
Did you mean to say "less practical" instead of "more practical"?
– Fyodor Soikin
Mar 9 at 3:43
Did you mean to say "less practical" instead of "more practical"?
– Fyodor Soikin
Mar 9 at 3:43
@FyodorSoikin Yes, thank you. Edited my post.
– tolUene
Mar 9 at 3:46
@FyodorSoikin Yes, thank you. Edited my post.
– tolUene
Mar 9 at 3:46
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%2f55073376%2fhow-to-fix-this-haskell-function-using-take-and-drop-while%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
Two different variables are named
x.– Jason Orendorff
Mar 9 at 3:38
2
group [1,1,2] == [[1,1],2]I know that can't be true without even looking at the source ofgroup, because the RHS is ill-typed.– Joseph Sible
Mar 9 at 4:27