# Container #
Python : dict, tuple, list, string tuple, string dict, list
|||
|------|------|
|| `__len__` `__getitem__` |
|| `__setitem__` `__delitem__` |
|| `__iter__` |
|| `__len__(self)` |
| `self[key]` key TypeError key,ValueError| `__getitem__(self, key)`|
| `self[key] = value` | `__setitem__(self, key, value)`|
| `del self[key]` | `__delitem__(self, key)`|
| `for x in container:` `iter(container)` | `__iter__(self)` |
Haskell
```python
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
class FunctionalList:
''' list,: head, tail, init, last, drop, take'''
def __init__(self, values=None):
if values is None:
self.values = []
else:
self.values = values
def __len__(self):
return len(self.values)
def __getitem__(self, key):
return self.values[key]
def __setitem__(self, key, value):
self.values[key] = value
def __delitem__(self, key):
del self.values[key]
def __iter__(self):
return iter(self.values)
def __reversed__(self):
return FunctionalList(reversed(self.values))
def append(self, value):
self.values.append(value)
def head(self):
#
return self.values[0]
def tail(self):
#
return self.values[1:]
def init(self):
#
return self.values[:-1]
def last(self):
#
return self.values[-1]
def drop(self, n):
# N
return self.values[n:]
def take(self, n):
# N
return self.values[:n]
```