Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Haskell Program to Count the Number of Vowels and Consonants in a Sentence
In this tutorial, we discuss writing a program to count the number of vowels and consonants in a Sentence in the Haskell programming language. Haskell is a Declarative, Strongly Typed, and Functional programming language. The computations in Haskell are mathematical functions.
Vowels are the open sound-producing letters in English literature. The list of vowels in the English alphabet is ?a?, ?e?, ?i?, ?o?, and ?u?. The other letters are consonants.
In this tutorial, we see two different ways to implement the program to count the number of vowels and consonants in Haskell.
Implementing the program to count the number of vowels and consonants using if-else statements.
Implementing the program to count the number of vowels and consonants using the list function elem with if-else.
Algorithm steps
Declare or take input a sentence.
Implement the program to compute the count of vowels and consonants in string.
Print or Display the computed counts.
Example 1
Implementing the program to count the number of vowels and consonants using if-else statements
<div class="execute"></div><div class="code-mirror language-haskell" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token import-statement"><span class="token keyword">import</span> Data<span class="token punctuation">.</span>Char</span>
<span class="token comment">-- function declaration for countVowels</span>
<span class="token hvariable">countVowels</span><span class="token operator">::</span><span class="token punctuation">[</span><span class="token constant">Char</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token constant">Int</span>
<span class="token comment">-- function definition for countVowels</span>
<span class="token comment">-- base case</span>
<span class="token hvariable">countVowels</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0</span>
<span class="token hvariable">countVowels</span> <span class="token punctuation">(</span><span class="token hvariable">ch</span><span class="token operator">:</span><span class="token hvariable">str</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'a'</span> <span class="token operator">||</span> <span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'e'</span> <span class="token operator">||</span> <span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'i'</span> <span class="token operator">||</span> <span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'o'</span> <span class="token operator">||</span> <span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'u'</span><span class="token punctuation">)</span>
<span class="token keyword">then</span> <span class="token number">1</span> <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token hvariable">countVowels</span> <span class="token hvariable">str</span><span class="token punctuation">)</span>
<span class="token keyword">else</span> <span class="token punctuation">(</span><span class="token hvariable">countVowels</span> <span class="token hvariable">str</span><span class="token punctuation">)</span>
<span class="token comment">-- function declaration for countConsonants</span>
<span class="token hvariable">countConsonants</span><span class="token operator">::</span><span class="token punctuation">[</span><span class="token constant">Char</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token constant">Int</span>
<span class="token comment">-- function definition for countConsonants</span>
<span class="token comment">-- base case</span>
<span class="token hvariable">countConsonants</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0</span>
<span class="token hvariable">countConsonants</span> <span class="token punctuation">(</span><span class="token hvariable">ch</span><span class="token operator">:</span><span class="token hvariable">str</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">ord</span> <span class="token hvariable">ch</span><span class="token punctuation">)</span><span class="token operator">>=</span><span class="token number">97</span> <span class="token operator">&&</span> <span class="token punctuation">(</span><span class="token builtin">ord</span> <span class="token hvariable">ch</span><span class="token punctuation">)</span><span class="token operator"><=</span><span class="token number">122</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token builtin">not</span> <span class="token punctuation">(</span><span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'a'</span> <span class="token operator">||</span> <span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'e'</span> <span class="token operator">||</span> <span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'i'</span> <span class="token operator">||</span> <span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'o'</span> <span class="token operator">||</span> <span class="token hvariable">ch</span><span class="token operator">==</span><span class="token char string">'u'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token keyword">then</span> <span class="token number">1</span> <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token hvariable">countConsonants</span> <span class="token hvariable">str</span><span class="token punctuation">)</span>
<span class="token keyword">else</span> <span class="token punctuation">(</span><span class="token hvariable">countConsonants</span> <span class="token hvariable">str</span><span class="token punctuation">)</span>
<span class="token hvariable">main</span> <span class="token operator">::</span> <span class="token constant">IO</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token hvariable">main</span> <span class="token operator">=</span> <span class="token keyword">do</span>
<span class="token comment">-- declaring and initializing the variable for the sentence</span>
<span class="token keyword">let</span> <span class="token hvariable">input</span> <span class="token operator">=</span> <span class="token string">"Thank you for visiting Tutorialspoint ="</span>
<span class="token comment">-- case conversion of the input string to lowercase</span>
<span class="token keyword">let</span> <span class="token hvariable">sentence</span> <span class="token operator">=</span> <span class="token builtin">map</span> <span class="token builtin">toLower</span> <span class="token hvariable">input</span>
<span class="token comment">-- invoking the function countVowels with the argument sentence and printing the returned result</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token string">"The number of vowels in the sentence: "</span><span class="token operator">++</span> <span class="token hvariable">input</span><span class="token punctuation">)</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token hvariable">countVowels</span> <span class="token hvariable">sentence</span><span class="token punctuation">)</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token string">"The number of consonants in the sentence: "</span><span class="token operator">++</span> <span class="token hvariable">input</span><span class="token punctuation">)</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token hvariable">countConsonants</span> <span class="token hvariable">sentence</span><span class="token punctuation">)</span>
</div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>
Output
"The number of vowels in the sentence: Thank you for visiting Tutorialspoint =" 13"The number of consonants in the sentence: Thank you for visiting Tutorialspoint =" 20
In the above program,
We initially imported the Chat module from the package, which contains utility functions on the Character data type.
We declared a function countVowels as such it takes a string as an argument and returns an integer. In its function definition, we are accepting the string argument using pattern matching (string destructuring). We are accessing string as a combination of its first element and other elements. Then we check the first element, if the first element is a vowel then we are returning a recursive call with the remaining string as an argument addition with value 1. Else we are just returning the recursive call with the remaining string as an argument. I.e The recursive calls are invoked until the function attains base case where the string is empty where the function returns 0.
The countVowels function returns the count of vowels in a string.
We declared a function countConsonants as such it takes a string as an argument and returns an integer. In its function definition, we are accessing the head element and tail of the string using pattern matching. We are checking the character is a letter and not a vowel. If the condition is satisfied, we are returning the recursive call with the remaining string as argument addition with value 1. Else we are just returning the function call. The recursive calls are invoked until the function reaches the base case where the string argument is empty where the function returns 0;
The countConsonants function returns the count of consonants in a string.
Finally, we are invoking these functions from the main and printing the returned result.
Note ? ord is a function that returns the ASCII value of a character, this is a utility function available in the Char module.
Example 2
Implementing the program to count the number of vowels and consonants using the list function elem.
<div class="execute"></div><div class="code-mirror language-haskell" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token import-statement"><span class="token keyword">import</span> Data<span class="token punctuation">.</span>Char</span>
<span class="token comment">-- function declaration for countVowels</span>
<span class="token hvariable">countVowels</span><span class="token operator">::</span><span class="token punctuation">[</span><span class="token constant">Char</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token constant">Int</span>
<span class="token comment">-- function definition for countVowels</span>
<span class="token comment">-- base case</span>
<span class="token hvariable">countVowels</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0</span>
<span class="token hvariable">countVowels</span> <span class="token punctuation">(</span><span class="token hvariable">ch</span><span class="token operator">:</span><span class="token hvariable">str</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token builtin">elem</span> <span class="token hvariable">ch</span> <span class="token punctuation">[</span><span class="token char string">'a'</span><span class="token punctuation">,</span><span class="token char string">'e'</span><span class="token punctuation">,</span><span class="token char string">'i'</span><span class="token punctuation">,</span><span class="token char string">'o'</span><span class="token punctuation">,</span><span class="token char string">'u'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token keyword">then</span> <span class="token number">1</span> <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token hvariable">countVowels</span> <span class="token hvariable">str</span><span class="token punctuation">)</span>
<span class="token keyword">else</span> <span class="token punctuation">(</span><span class="token hvariable">countVowels</span> <span class="token hvariable">str</span><span class="token punctuation">)</span>
<span class="token comment">-- function declaration for countConsonants</span>
<span class="token hvariable">countConsonants</span><span class="token operator">::</span><span class="token punctuation">[</span><span class="token constant">Char</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token constant">Int</span>
<span class="token comment">-- function definition for countConsonants</span>
<span class="token comment">-- base case</span>
<span class="token hvariable">countConsonants</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0</span>
<span class="token hvariable">countConsonants</span> <span class="token punctuation">(</span><span class="token hvariable">ch</span><span class="token operator">:</span><span class="token hvariable">str</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token builtin">elem</span> <span class="token hvariable">ch</span> <span class="token punctuation">(</span><span class="token builtin">map</span> <span class="token builtin">chr</span> <span class="token punctuation">[</span><span class="token number">97</span><span class="token operator">..</span><span class="token number">122</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">&&</span> <span class="token builtin">not</span> <span class="token punctuation">(</span><span class="token builtin">elem</span> <span class="token hvariable">ch</span> <span class="token punctuation">[</span><span class="token char string">'a'</span><span class="token punctuation">,</span><span class="token char string">'e'</span><span class="token punctuation">,</span><span class="token char string">'i'</span><span class="token punctuation">,</span><span class="token char string">'o'</span><span class="token punctuation">,</span><span class="token char string">'u'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token keyword">then</span> <span class="token number">1</span> <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token hvariable">countConsonants</span> <span class="token hvariable">str</span><span class="token punctuation">)</span>
<span class="token keyword">else</span> <span class="token punctuation">(</span><span class="token hvariable">countConsonants</span> <span class="token hvariable">str</span><span class="token punctuation">)</span>
<span class="token hvariable">main</span> <span class="token operator">::</span> <span class="token constant">IO</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token hvariable">main</span> <span class="token operator">=</span> <span class="token keyword">do</span>
<span class="token comment">-- declaring and initializing variable for sentence</span>
<span class="token keyword">let</span> <span class="token hvariable">input</span> <span class="token operator">=</span> <span class="token string">"Thank you for visiting Tutorialspoint"</span>
<span class="token comment">-- case conversion of input string to lowercase</span>
<span class="token keyword">let</span> <span class="token hvariable">sentence</span> <span class="token operator">=</span> <span class="token builtin">map</span> <span class="token builtin">toLower</span> <span class="token hvariable">input</span>
<span class="token comment">-- invoking the function countVowels with argument sentence and printing the returned result</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token string">"The number of vowels in the sentence:"</span><span class="token operator">++</span> <span class="token hvariable">input</span><span class="token punctuation">)</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token hvariable">countVowels</span> <span class="token hvariable">sentence</span><span class="token punctuation">)</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token string">"The number of consonants in the sentence:"</span><span class="token operator">++</span> <span class="token hvariable">input</span><span class="token punctuation">)</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token hvariable">countConsonants</span> <span class="token hvariable">sentence</span><span class="token punctuation">)</span>
</div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>
Output
"The number of vowels in the sentence:Thank you for visiting Tutorialspoint" 13 "The number of consonants in the sentence:Thank you for visiting Tutorialspoint" 20
In the above program,
elem is a function that takes a single element and a list of element as argument chect the existence of the element in the list. If the element is present in the list then the function returns true, Else it returns false.
In the function countVowels. We are checking the first element with the list [?a?,?e?,?i?,?o?,?u?] using the function elem. And rest is the same as in the function in Example1.
The countVowels function returns the count of vowels in a string.
In the function countConsonants, we are generating all the lowercase characters using the map function to check whether the element is a character and the rest is the same as in the previous Example.
The countConsonants function returns the count of consonants in a string.
Finally, we are invoking these functions from the main and printing the returned result.
Note ? char is a function that returns a character for an ASCII value, this is a utility function available in the Char module.
Conclusion
In this tutorial, we discussed writing a program to count the number of vowels and consonants in a Sentence in Haskell programming language.
