A palindrome is a sequence that reads the same forwards and backwards. For example “1234321” is a number palindrome, but “123456” is not. Examples of word palindromes include “wow” and “Hannah”. Phrases are generally considered palindromes when punctuation and spacing is ignored, such as “Madam, I’m Adam”,

“A man, a plan, a canal – Panama!” and “Able was I ere I saw Elba.”



Write an ML program that determines if a string is a palindrome.


1. The only predefined ML functions that you are allowed to use are explode, chr, and ord. Otherwise, you need to write your own functions.

2. You may not use ML iterative functions such as for or while. (You may use @, ::, if-the-else and recursive function calls.)

3. You are required to write a function named is_palindrome that takes a string as the argument and returns Boolean true if the string is a palindrome, and false if it is not. The user can include any spacing, capitalization, and punctuation they wish – your program just analyzes whether the alphabetic characters constitute a palindrome. For example, give the function call is_palindrome “A man, a plan, a canal – Panama!” your function should evaluate to true. For the function call is_palindrome “ML is the best language!” your function should evaluate to false.

4. Please see the tips below for suggestions.


For full credit, you must follow the programming style requirements for this class:

• Include a header comment containing your name, the date, the name of the program, and the purpose of the program.

• Comment sections of your code in enough detail for another programmer to understand what you are doing. (Generally, commenting what each separate task is doing is sufficient.)

• Comment each function, describing the purpose of the function. This usually means that you will describe each argument of a function, and what the function evaluates to.

• There should be no “match non-exhaustive” warnings, except in really special cases where it does not make logical sense to make exhaustive matches (ask me if you are uncertain). A Poly Equal warning is acceptable, but no other warnings are allowed.

• In addition, for recursive functions you need to include a comment pointing out which is the base case and which is the recursive case.


1. At the beginning of your file, it may be useful to define some variables that contain lists and strings. You can then use them for testing your various functions.

2. I recommend that you start out by writing helper functions to perform useful tasks (but these are not required -- you can solve this in a different way if you wish, within the problem constraints):

a. my_reverse: reverses a list (without using the built-in ML function reverse). The function call

my_reverse [#”a”, #”b”, #”c”]

should evaluate to

[#”c”, #”b”, #”a”]

b. removeNonAlphabetic: given a list of characters, this function returns a list where all non-letter characters have been removed. In other words, it deletes spaces, commas, other punctuation marks, and numbers. The function call

removeNonAlphabetic [#”A”, #” “, #”b”, #”!”]

should return

[#”A”, #”b”].

Note that this is equivalent to the function call

removeNonAlphabetic(explode “A b!”).

c. changeToLowercase: given a list of characters, this function returns a list where all uppercase letters have been converted to lowercase letters. Hint: The ML functions ord and chr could be useful here, as would the knowledge of the ASCII values for A and a. The function call

changeToLowercase [#”a”, #”A”]

should return

[#”a”, #”a”]

d. getLast: given a list, this function returns the last item in the list. A function call

getLast [1,2,3,4]

should return


e. removeLast: given a list, this function returns a list with the last item removed. A function call

removeLast [1,2,3,4]

should return


Skills: Pengaturcaraan

See more: longest palindrome, palindrome sentence, palindrome numbers, palindrome phrases, funny palindromes, longest palindrome word, palindrome words, romantic palindromes, jquery expandable sections sortable lists bit html, caculate days date format uk style javascripting, background simple style, anime style background, browse daily expiring lists date, background twitter style, comic book style layout background

About the Employer:
( 1 review ) muncie, United States

Project ID: #16713765

2 freelancers are bidding on average $25 for this job


Read the descriptions well. Can do it surely. ...........................................................

$25 USD in 1 day
(12 Reviews)

I have a 15th years of experiences

$25 USD in 1 day
(0 Reviews)