Constructs a block matrix from a list of lists. Each internal list is stacked horizontally, and the internal lists are stacked vertically.

## Arguments

- block_lists
A list of lists containing Expression objects, matrices, or vectors, which represent the blocks of the block matrix.

## Value

An Expression representing the block matrix.

## Examples

```
x <- Variable()
expr <- bmat(list(list(matrix(1, nrow = 3, ncol = 1), matrix(2, nrow = 3, ncol = 2)),
list(matrix(3, nrow = 1, ncol = 2), x)
))
prob <- Problem(Minimize(sum_entries(expr)), list(x >= 0))
result <- solve(prob)
result$value
#> [1] 21
```