Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. sendText : HostName -> .base.Nat -> .base.Text ->{IO} ()
  2. sendText hostName port text =
  3. serviceName = ServiceName.ServiceName (.base.Nat.toText port)
  4. socket = clientSocket hostName serviceName
  5. send socket (.base.Text.asciiBytes text)
  6. closeSocket socket
  7.  
  8. base.Text.asciiBytes : .base.Text -> .base.Bytes
  9. base.Text.asciiBytes = .base.Bytes.fromList . base.Text.asciiNats
  10.  
  11. base.Text.asciiNats : .base.Text -> [.base.Nat]
  12. base.Text.asciiNats text =
  13. asciiNat : .base.Text -> .base.Nat
  14. asciiNat char =
  15. case .base.Map.lookup char base.Text.asciiMap of
  16. .base.Optional.Some nat -> nat
  17. _ -> 32
  18. chars = base.Text.characters text
  19. .base.List.map asciiNat chars
  20.  
  21. base.Text.asciiMap : .base.Map .base.Text .base.Nat
  22. base.Text.asciiMap =
  23. asciiCharacters =
  24. base.Text.characters
  25. " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
  26. asciiRange = .base.List.range 32 127
  27. pairs = .base.List.zip asciiCharacters asciiRange
  28. .base.Map.fromList pairs
  29.  
  30. base.Text.characters : .base.Text -> [.base.Text]
  31. base.Text.characters text = base.List.unfold text base.Text.uncons
  32.  
  33. base.Text.uncons : .base.Text -> .base.Optional (.base.Text, .base.Text)
  34. base.Text.uncons text =
  35. case (take 1 text, drop 1 text) of
  36. ("", _) -> .base.Optional.None
  37. (head, tail) -> .base.Optional.Some (head, tail)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement