let sum3 a b c = a + b + c let issqsum a b c = (a*a + b*b == c*c) let ismin arg list = (minimum list) == arg let isadigit a = (a `elem` ['0'..'9']) let digitX a = if isadigit a then 'X' else a let nondigits list = [x | x <- list, not(x `elem` ['0'..'9']) ] let digitsX list = [x | x <- list, if (x `elem` ['0'..'9']) then x <- 'X'] let digitsX xs = [if (x `elem` ['0'..'9']) then 'X' else x | x <- xs] let picknth n xs = head (take 1 (drop (n-1) xs)) let cpos c xs = sum [1 | x <- xs, x <= c] let isupper c = c `elem` ['A'..'Z'] let isalnum c = c `elem` (['a'..'z'] ++ ['A'..'Z']) let lowr x = (picknth (cpos x (['a'..'z']) + 13) (['a'..'z'] ++ ['a'..'z'])) let uppr x = (picknth (cpos x (['A'..'Z']) + 13) (['A'..'Z'] ++ ['A'..'Z'])) let cstr str = [if not (isalnum x) then x else if isupper x then uppr x else lowr x | x <- str] let tas xsa xsb xsc = [(a,b,c) | a <- xsa, b <- xsb, c <- xsc, a*a+b*b == c*c]