Skip to content

Commit 29e6236

Browse files
committed
Add the count function
1 parent 87fde2a commit 29e6236

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
charCodeAt :: Number -> String -> Maybe Number
3535

36+
count :: (Char -> Boolean) -> String -> Number
37+
3638
drop :: Number -> String -> String
3739

3840
dropWhile :: (Char -> Boolean) -> String -> String

src/Data/String.purs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ module Data.String
1414
singleton,
1515
localeCompare,
1616
replace,
17+
count,
1718
take,
1819
takeWhile,
1920
drop,
@@ -65,10 +66,10 @@ module Data.String
6566
uncons s = Just {head : U.charAt 0 s, tail : drop 1 s}
6667

6768
takeWhile :: (Char -> Boolean) -> String -> String
68-
takeWhile = doAfter take
69+
takeWhile p s = take (count p s) s
6970

7071
dropWhile :: (Char -> Boolean) -> String -> String
71-
dropWhile = doAfter drop
72+
dropWhile p s = drop (count p s) s
7273

7374
foreign import fromCharArray
7475
"""
@@ -162,18 +163,16 @@ module Data.String
162163
}
163164
""" :: Number -> String -> String
164165

165-
foreign import doAfter
166+
foreign import count
166167
"""
167-
function doAfter(f){
168-
return function(p){
169-
return function(s){
170-
var i;
171-
for(i = 0; i < s.length && p(s.charAt(i)); i++){};
172-
return f(i)(s);
173-
};
174-
};
168+
function count(p){
169+
return function(s){
170+
var i;
171+
for(i = 0; i < s.length && p(s.charAt(i)); i++){};
172+
return i;
173+
};
175174
}
176-
""" :: (Number -> String -> String) -> (Char -> Boolean) -> String -> String
175+
""" :: (Char -> Boolean) -> String -> Number
177176

178177
foreign import split
179178
"""

0 commit comments

Comments
 (0)